Kan ikke udskrive 4.5 stjerne

greenspun.com : LUSENET : WebdesignII : One Thread

Jeg har forsøgt at vise den gennemsnitlige score for den enkelte restaurant avg(rating) som stjerner i stedet for som tal. Men min webserver på HUG går ned når jeg forsøger at udskrive 4.5 stjerner. Derfor vil jeg sikre mig at avg(rating) altid laves om til et heltal, jeg vil fjerne alle decimaler efter kommaet. Jeg har forsøgt at gøre det i proceduren genstars, sådan her: proc genstars { n } { format "%.0f" $n if { $n == 0 } { return "" } else { return "\n[genstars [expr $n - 1]]" } } men det virker i hvertfald ikke. Resultatet bliver: % genstars 3.5; too many nested calls to Tcl_EvalObj (infinite loop?) % Skal jeg gå ind og lave avg(rating) om til heltal et andet sted?

-- Anne Holdt (holdt@it-c.dk), April 06, 2001

Answers

du skal huske at binde resultatet af din format kommando til en variabel, f.eks. n igen. Prøv derfor:

proc genstars { n } {
set n [format "%.0f" $n]
if { $n == 0 } {
  return ""
 } else {
    return "\n[genstars [expr $n -
1]]"
 }
}


-- Niels Hallenberg (nh@it-c.dk), April 06, 2001.

Moderation questions? read the FAQ