gpt4 book ai didi

c++ - 从 cout 中抑制 "minus zero"

转载 作者:太空宇宙 更新时间:2023-11-04 13:56:08 25 4
gpt4 key购买 nike

double value;
std::ostringstream s;
s << std::fixed << std::setprecision(3) << value;

value-1.0e-14 范围内徘徊至 1.0e-14 , s"0.000" 之间闪烁和 "-0.000" .有没有一种干净的方法来抑制减号,它只表示不相关的噪声再往下十位小数?

(不太一般的情况是 cout << ... 。)

what is the best way to avoid negative zero in output?解决表面问题。它的答案是在传递给 << 之前四舍五入到有效数字的正确数量,与“如果所有数字都为零,则只删除该死的减号”相比,计算量很大。

最佳答案

即使 <iomanip> 中没有任何内容可以调整实际流,我们至少可以不依赖传递给 setprecision() 的值,如下所示:

const std::string& t = s.str();
return t.find_first_of("123456789") == t.npos && t[0] == '-' ?
t.substr(1) : t;

如果未找到 1..9 中的数字,则所有数字都必须为 0。

此外,如果它以减号开头,则跳过该字符。

关于c++ - 从 cout 中抑制 "minus zero",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21370382/

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