我正在为 Arduino 编写一个完整的双浮点函数(无关紧要,但我找不到任何“正确”的函数),我做了以下检查:
if (d < 0) {
d *= -1;
bin += "-";
}
我知道由于浮点不精确,双重相等是挑剔的。那么这样做安全吗?或者我应该坚持这个(无论如何我在我的代码的后面部分使用它)
int compareNums(double x, double y) {
if (abs(x - y) <= EPSILON) {
return 0;
} else if (x > y) {
return 1;
} else {
return -1;
}
}
还有几个简单的问题:我做d < 0
或做有关系d < 0.0
吗?
我将 a 乘以double d
10 直到它没有小数部分,所以我做了一个类似于d == (int) d
. 我想知道什么是好的 epsilon 使用(我在这里使用了这个http://msdn.microsoft.com/en-us/library/6x7575x3(v=vs.80).aspx),因为我不想以无限循环结束。根据文章0.000000119209
是浮动或类似的东西的最小可区分差异。
谢谢