你如何向仍然认为计算机是无限智能和准确的新鲜程序员和外行人解释浮点不准确?
你有一个最喜欢的例子或轶事似乎比一个精确但干燥的解释更好地理解这个想法吗?
这是如何在计算机科学课程中教授的?
可能重复:
浮点不准确示例
double a = 0.3;
std::cout.precision(20);
std::cout << a << std::endl;
Run Code Online (Sandbox Code Playgroud)
结果:0.2999999999999999889
double a, b;
a = 0.3;
b = 0;
for (char i = 1; i <= 50; i++) {
b = b + a;
};
std::cout.precision(20);
std::cout << b << std::endl;
Run Code Online (Sandbox Code Playgroud)
结果:15.000000000000014211
所以..'a'比它应该小.但是,如果我们采取'a'50次 - 结果会比它应该更大.
为什么是这样?如何在这种情况下得到正确的结果?
我有一些json对象,当我在python中将它们转换为字典时,它们将舍入:
-112.07393329999999 -> -112.0739333
Run Code Online (Sandbox Code Playgroud)
我的代码是:
for line in open("c:\\myfile","r+").readlines():
d = json.loads(line)
logtv = d['logtv']
Run Code Online (Sandbox Code Playgroud)