问题五:什么是比较浮点数和零点的标准方法?什么是将float与零进行比较的标准方法?
据我所知直接的比较:
if (x == 0) {
// x is zero?
} else {
// x is not zero??
可能失败,浮点变量。
我用
float x = ...
...
if (std::abs(x) <= 1e-7f) {
// x is zero, do the job1
} else {
// x is not zero, do the job2
...
同样的方法,我觉得here。但我看到两个问题:
- 随机幻数1e-7f(或0.00005在上面的链接)。
- 代码更难阅读
这是这样一个共同的比较,我想知道是否有这样做一个标准的一小段路。像
x.is_zero();
你的用例是什么?为什么你将一个浮点数比较为零? –
不,没有标准,因为epsilon的适当值取决于应用程序。 – Barmar
这取决于你想要做什么。数字从哪里来?为什么它重要,如果它是零? job1不能工作时,是否有限制? –