Nan*_*hal 6 c++ floating-point
我正在编写一个程序,其中有一些操作正在浮点数上执行.在我调试程序之后,我开始知道对于特定的测试用例,该值的值variable equals -2.38418579e-07.现在我将cout精度设置为小数点后的2位数.因此,当我打印它时,它打印为-0.00.
但是,我希望输出为0.00而不是-0.00.我已经尝试if了变量值的各种条件.但是,他们没有帮助.任何人都可以建议如何在C++中摆脱-0.00
首先,您应该定义一个容差数作为阈值,任何低于该阈值的浮点数的绝对值都将被视为零。例如,您可以将此阈值定义为:
#define zero 1e-6
Run Code Online (Sandbox Code Playgroud)
然后您可以使用以下构造来“过滤”浮点数:
template<typename T>
std::enable_if_t<std::is_floating_point<T>::value, T> sanitize(T &&num) {
return std::abs(num) < zero? T{} : num;
}
Run Code Online (Sandbox Code Playgroud)
请注意,我使用 SFINAE 是为了使该sanitize函数仅接受浮点数作为输入。