gpt4 book ai didi

c++ - 检查双 "d < 0"可以吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:32 25 4
gpt4 key购买 nike

我正在为 Arduino 编写一个完整的 double 到 float 函数(无关紧要,但我找不到任何“合适的”函数)并且我做了这个检查:

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 < 0d < 0.0

我乘以 double d乘 10 直到它没有小数部分,所以我做了一个类似于 d == (int) d 的检查.我想知道什么是好的 epsilon(我在这里使用了这个 http://msdn.microsoft.com/en-us/library/6x7575x3(v=vs.80).aspx ),因为我不想以无限循环结束。根据文章0.000000119209是 float 或类似东西的最小可区分差异。

谢谢

最佳答案

d < 0是有效的(虽然我更愿意写 d < 0.0 。在第一种情况下,零将在比较之前“提升”到两倍。

并将 double 与 0 与 < 进行比较或 >完全有效,不需要“epsilon”。

bin += "-";是荒谬的。

一般来说,用“==”比较 float / double 是无效的,永远不应该这样做(除了一些特殊情况,例如检查零或无穷大)。一些语言甚至不允许在 float 之间使用“==”(或等价物)。

d == (int) d更多废话。

关于c++ - 检查双 "d < 0"可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11533936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com