作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在编写一个程序,其中对 float 执行一些操作。调试程序后,我了解到对于特定的测试用例,变量的值等于-2.38418579e-07
。现在我将 cout 精度设置为小数点后 2 位。所以当我打印它时,它打印为 -0.00。
但是,我希望输出为 0.00 而不是 -0.00。我在变量值上尝试了各种 if
条件。但是,它们无济于事。谁能建议如何在 C++ 中摆脱 -0.00
最佳答案
首先,您应该定义一个容差数作为阈值,任何低于该阈值的 float 的绝对值都将被视为零。例如,您可以将此阈值定义为:
#define zero 1e-6
然后您可以使用以下结构来“过滤”您的 float :
template<typename T>
std::enable_if_t<std::is_floating_point<T>::value, T> sanitize(T &&num) {
return std::abs(num) < zero? T{} : num;
}
请注意,我使用 SFINAE 是为了让 sanitize
函数仅接受 float 作为输入。
关于c++ - 如何在 C++ 中去掉 -0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34885631/
我是一名优秀的程序员,十分优秀!