4
我试图在我的程序中递归添加一些CGFloat值。我只是在一个特定的场景中意识到生成的总数是不正确的。为了确保我的程序逻辑没有任何问题,我创建了一个该场景的简单示例(请参阅下文),并打印出相同的错误值。CGFloat添加bug?
CGFloat arr[3] = {34484000,512085280,143011440};
CGFloat sum = 0.0;
sum = arr[0] + arr[1] + arr[2];
NSLog(@"%f",sum);
int arr1[3] = {34484000,512085280,143011440};
int sum1 = 0.0;
sum1 = arr1[0] + arr1[1] + arr1[2];
NSLog(@"%d",sum1);
第一的NSLog打印689580736.000000 ......而正确的结果689580720.但是第二NSLog的打印正确的结果。我不确定这是一个错误还是我做错了什么。
谢谢, 穆拉利
对于正确和详细的答案+1。 – Till
Paul,谢谢你的回答。我认为它必须处理一些限制问题。你的笔记澄清了它。我将它从CGFloat改为double,并打印出正确的结果。同样基于我刚刚阅读的其他信息 - 浮点数有7位数限制,双15/16和小数位数28/29位数限制。感谢这篇文章,我会在闲暇时阅读它。 –