Xcode Obj-C为什么7/10不是0.7

时间:2010-06-28 07:38:36

标签: iphone objective-c xcode floating-point

int a=7
int b=10
float answer = (float)a/b;

回答= 0.699999988(我期待0.7 ??)

4 个答案:

答案 0 :(得分:3)

短版本是:浮点不准确,它只是一组有限的位,有限的一组位不能用来表示一组无数的数字。

版本较长的版本是:What Every Computer Scientist Should Know About Floating-Point Arithmetic

另见:

How is floating point stored? When does it matter?

Why is my number being rounded incorrectly?

答案 1 :(得分:1)

浮点数仅对某个有限位数的精度是准确的。您将需要进行一些舍入以获得整数。

如果需要更高的精度,请使用double数据类型或NSDecimal类(以复杂性为代价保留十进制数字)。

答案 2 :(得分:0)

这是因为浮点计算不准确。

答案 3 :(得分:0)

我唯一依赖的是存在精确的小整数(即-2,-1,0,1,2,正如你可能用来表示[0,1]加上一些特殊值),还有一些人也不好意思使用它。