你如何向仍然认为计算机是无限智能和准确的新鲜程序员和外行人解释浮点不准确?
你有一个最喜欢的例子或轶事似乎比一个精确但干燥的解释更好地理解这个想法吗?
这是如何在计算机科学课程中教授的?
我刚刚阅读了有关浮点值比较的声明
不能使用==或!=运算符比较浮点值.大多数浮点值没有精确的二进制表示,并且精度有限.
如果是这样,比较两个浮点值的最佳方法是什么?
这是一个奇怪的事(至少对我来说).此例程打印为true:
double x = 11.0;
double y = 10.0;
if (x-y == 1.0) {
// print true
} else {
// print false
}
Run Code Online (Sandbox Code Playgroud)
但是这个例程打印错误:
double x = 1.1;
double y = 1.0;
if (x-y == 0.1) {
// print true
} else {
// print false
}
Run Code Online (Sandbox Code Playgroud)
有人想解释这里发生了什么吗?我猜这与ints冒充floats的整数运算有关.此外,还有其他基地(除了10)有这个属性?