gpt4 book ai didi

c++ - 如何在 C++ 中去掉 -0

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:40:04 24 4
gpt4 key购买 nike

我正在编写一个程序,其中对 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;
}

Live Demo

请注意,我使用 SFINAE 是为了让 sanitize 函数仅接受 float 作为输入。

关于c++ - 如何在 C++ 中去掉 -0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34885631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com