为什么在这个Objective C / Cocoa代码中浮点数会四舍五入

时间:2010-03-20 13:30:23

标签: objective-c floating-point

我做的很简单:

float x = 151.185436;
printf("x=%f",x);

,结果是

X = 151.185440

这里有什么不对?我想保留并打印我的原始值151.185436

由于 Amarsh

3 个答案:

答案 0 :(得分:3)

漂浮物不是很准确。试试双倍。并阅读:http://docs.sun.com/source/806-3568/ncg_goldberg.html

答案 1 :(得分:2)

浮点数只能容纳32位(4字节)有关您的号码的信息 - 它不能只存储您需要的小数位数。 151.18544与浮点数可以表示的值接近,而不会耗尽位数。

对于您想要的精度,您需要使用double而不是float。

答案 2 :(得分:0)

浮动不准确,使用双打。另外,当您使用Objective C而不是直接C时,如果您使用Objective C函数可能会更好:

myNumber = [NSNumber numberWithDouble:151.185436];
NSLog(@"myNumber = %@", myNumber);