奇怪的计算结果Objective-c

奇怪的计算结果Objective-c,objective-c,Objective C,使用excel时,如果我计算6/100以获得百分比值,它将返回0.060000 但当我在objective-c中进行同样的计算时,我得到0.05999998658895493 有人知道为什么会有差异吗?浮点值不能准确地表示所有小数。这与我们在十进制中看到的一些数字的行为相同,1/3不能在十进制中精确表示,它仅近似为0.33333333 计算机小数是以2为基数的,而我们的小数是以10为基数的。不同的分数可以在不同的基中完全准确地表示 因此,Cocoa中有一个数字类,它以10为基数,可以精确地表示6

使用excel时,如果我计算6/100以获得百分比值,它将返回0.060000 但当我在objective-c中进行同样的计算时,我得到0.05999998658895493


有人知道为什么会有差异吗?

浮点值不能准确地表示所有小数。这与我们在十进制中看到的一些数字的行为相同,1/3不能在十进制中精确表示,它仅近似为0.33333333

计算机小数是以2为基数的,而我们的小数是以10为基数的。不同的分数可以在不同的基中完全准确地表示

因此,Cocoa中有一个数字类,它以10为基数,可以精确地表示6/100,即0.060000


您在Excel中看到的差异可能是因为它使用的是十进制数学(可能不是),也可能是因为它对数字进行了舍入,因此显示不准确。

浮点值不能准确表示所有的小数。这与我们在十进制中看到的一些数字的行为相同,1/3不能在十进制中精确表示,它仅近似为0.33333333

计算机小数是以2为基数的,而我们的小数是以10为基数的。不同的分数可以在不同的基中完全准确地表示

因此,Cocoa中有一个数字类,它以10为基数,可以精确地表示6/100,即0.060000


您在Excel中看到的差异可能是因为它使用的是十进制数学(可能不是),也可能是因为它对数字进行了舍入,因此显示不准确。

这不是Objective-C特有的。您可能需要仔细阅读以下内容:<>基本上,0.06不能使用
浮点数来精确表示,因此,您看到的是最接近的结果。而且,Excel很可能在欺骗您。请注意,如果将C中的数字四舍五入到小数点后六位,则得到的结果与Excel给出的结果相同。请参考以下答案:这不是Objective-C所特有的。您可能需要仔细阅读以下内容:<>基本上,0.06不能用
浮点表示,因此您可以看到最接近的结果。此外,Excel很可能在骗你。请注意,如果将C中的数字四舍五入到小数点后六位,则得到的结果与Excel给出的结果相同。请参考以下答案: