浮动异常行为 Objective c

float unusual behaviour Objective c

我在 Objective C 中遇到 float 的异常问题。我输入 100.1 得到 100.100002 不应该是 100.100000 .

代码如下

float temp=100.1;
NSLog(@"%f",temp); 

100.100000

有人可以指导我做错了什么或如何解决吗?我不能使用固定的小数位,即我不能只使用 100.10 。我需要所有小数位。

因为这是用二进制表示任意 floating point value 时发生的事情的基本部分。二进制位数有限,因此进行四舍五入。根据您的需要,您最好使用 NSDecimalNumber

请尝试使用 double

double temp=100.1;
NSLog(@"%.8f",temp);

100.10000000

这是表示准确性的问题。我认为使用 double 不会有问题。