可以平方的最大浮点值
Largest floating point value that can be squared
我有一个接受可选距离参数的函数 dist
,但我的算法适用于平方距离。如果用户未指定任何值,我希望 dist
尽可能大。
Result foo(double dist = std::sqrt(std::numeric_limits<double>::max())) const;
上面的代码安全吗,还是会因为舍入错误而崩溃?使用像
这样(甚至)更丑陋的东西会更好吗?
Result foo(double dist = std::sqrt(std::numeric_limits<double>::max() - 100)) const;
如果你小心点,可以使用 std::numeric_limits<double>::infinity
。它会在比较中做正确的事情,如果你平方它,它仍然是无限的。
我有一个接受可选距离参数的函数 dist
,但我的算法适用于平方距离。如果用户未指定任何值,我希望 dist
尽可能大。
Result foo(double dist = std::sqrt(std::numeric_limits<double>::max())) const;
上面的代码安全吗,还是会因为舍入错误而崩溃?使用像
这样(甚至)更丑陋的东西会更好吗?Result foo(double dist = std::sqrt(std::numeric_limits<double>::max() - 100)) const;
如果你小心点,可以使用 std::numeric_limits<double>::infinity
。它会在比较中做正确的事情,如果你平方它,它仍然是无限的。