i've got loop in objective c , need coaching work out. i'm trying calculate height of 4 bars based on numbers stored strings in array, array. biggesttotal string containing largest of 4 objects in array. formatted each of elements in array currency.
for (int j=0; j<[array count]; j++) { nslog(@"%@ %@ %@",[nsstring stringwithformat:@"%d", j], [array objectatindex:j], biggesttotal); double barheight = (([[array objectatindex:j] doublevalue])*400.0/([biggesttotal doublevalue])); nslog(@"%@",barheight); cgrect currentrect = cgrectmake((150.0+(j*125.0)), (425.0-barheight), 100.0, barheight); // (x, y, width, height) cgcontextaddrect(context, currentrect); cgcontextdrawpath(context, kcgpathfillstroke); }
with nslog statements above, console outputs follows:
0 $106,758.20 $106,758.20 (null) 1 $14,536.69 $106,758.20 (null) 2 $32,111.96 $106,758.20 (null) 3 $100,020.00 $106,758.20 (null)
also, sadly no bars. missing here? why barheight (null)? appreciated...
barheight
null
* because @"$106,758.20"
doesn't have valid doublevalue
. rid of $
, ,
** , should work.
also, if you're doing math currency, don't use double
. use nsdecimalnumber
*actually 0.0
because can't converted, per docs, then, else has pointed out, you're trying log wrong format specifier: %@
, objects, not double
. since 0x0
nil
, , 0x0 == 0.0
:), if try nslog(@"%@", 0.0);
, "(null)" output. also, if do valid return doublevalue
, attempt use %@
result in crash**, because you'll trying touch memory you're not supposed to.
**credit caleb (see comment) pointing out.
Comments
Post a Comment