Pet*_*ann 1 math double core-graphics objective-c
我在Objective C中得到了这个循环,需要一些指导才能让它解决.我试图根据数组,数组中存储为字符串的数字来计算四个条的高度.largestTotal是一个字符串,包含数组中四个对象中最大的一个.我以前将数组中的每个元素格式化为货币.
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);
}
Run Code Online (Sandbox Code Playgroud)
使用上面的NSLog语句,我获得如下控制台输出:
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)
Run Code Online (Sandbox Code Playgroud)
还有,遗憾的是我没有酒吧.我在这里错过了什么?为什么barHeight是(null)?非常感激任何的帮助...
barHeight是NULL*因为@"$106,758.20"没有效果doubleValue.摆脱$和,**它应该工作.
此外,如果您使用货币进行数学运算,请不要使用double.使用NSDecimalNumber
*实际上0.0因为它不能按照文档转换,但是,正如其他人所指出的那样,你试图用错误的格式说明符来记录它:%@对象是对象,而不是double.因为0x0是nil和0x0 == 0.0:),如果你尝试NSLog(@"%@", 0.0);,你得到"(null)"输出.此外,如果您确实获得了有效的回报doubleValue,您尝试使用%@很可能会导致崩溃**,因为您将尝试触摸您不应该的内存.
**感谢Caleb(见评论)指出这一点.
| 归档时间: |
|
| 查看次数: |
3021 次 |
| 最近记录: |