我的问题是:如何标准地比较浮点数和零?
据我所知,直接比较会存在精度问题:
据我所知,直接比较会存在精度问题:
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
...
我发现这里也有同样的方法。但是我发现两个问题:
- 存在随机的魔数 1e-7f ( 或者在上述链接中为 0.00005 )。
- 代码难以阅读
这种比较很常见,我想知道是否有标准的简短方式来做到这一点。例如
x.is_zero();