你如何向仍然认为计算机是无限智能和准确的新鲜程序员和外行人解释浮点不准确?
你有一个最喜欢的例子或轶事似乎比一个精确但干燥的解释更好地理解这个想法吗?
这是如何在计算机科学课程中教授的?
我在 JavaScript 乘法中有一个奇怪的行为。我试图将数字乘以 100。例如:
> 9.5*100
> 950
> 9.95*100
> 994.9999999999999
> 9.995*100
> 999.4999999999999
> 9.9995*100
> 999.9499999999999
> 9.99995*100
> 999.995
> 9.999995*100
> 999.9995
> 9.9999995*100
> 999.9999499999999
> 9.99999995*100
> 999.9999949999999
> 9.999999995*100
> 999.9999995
> 9.9999999995*100
> 999.99999995
> 9.99999999995*100
> 999.999999995
> 9.999999999995*100
> 999.9999999995
> 9.9999999999995*100
> 999.9999999999501
> 9.99999999999995*100
> 999.999999999995
> 9.999999999999995*100
> 999.9999999999994
Run Code Online (Sandbox Code Playgroud)
我只想像这样将数字相乘
9.95*100
995.0 or 995
9.995*100
999.5
9.9995*100
999.95
9.9999995*100
999.99995
Run Code Online (Sandbox Code Playgroud)
而不是这样
> 9.995*100 …Run Code Online (Sandbox Code Playgroud) 可能重复:
乘以100时出现神秘计算错误
这是我面临的一个奇怪的问题.我将值.6存储到float变量.当我将它乘以100时,我得到错误答案为60.000004.这个.000004来自哪里?这是我的代码
NSlog(@"%f",self.dataHandler.correctPercentage * 100);
if (self.obj.percentage >= (self.dataHandler.correctPercentage * 100) )
{
//Do something
}
Run Code Online (Sandbox Code Playgroud)
存储在self.dataHandler.correctPercentage中的值是.6.但是当我把它记录下来时,我得到了60.000004.由于这个原因,我的边界条件出错了.
为什么会这样?