簡體   English   中英

抑制cout的“減零”

[英]suppress “minus zero” from cout

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

value-1.0e-141.0e-14范圍內-1.0e-14s"0.000""-0.000"之間閃爍。 是否有一種干凈的方法來抑制負號,而負號僅表示無關的噪聲,該噪聲要小十位?

(不太常見的情況是cout << ...

避免輸出為負零的最佳方法是什么? 解決表面問題。 它的答案傳遞給<< 之前四舍五入到正確的有效數字位數,與“如果所有數字均為零時,將Frickin減負”相比較,則需要進行大量計算。

即使<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。

此外,如果它以減號開頭,則跳過該字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM