可能的问题是:将浮点数与零进行比较的标准方法是什么?
据我所知直接比较:
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();