double value;
std::ostringstream s;
s << std::fixed << std::setprecision(3) << value;
當value
飄蕩在範圍-1.0e-14
到1.0e-14
,"0.000"
和"-0.000"
之間s
閃爍。 是否有一個乾淨的方法來抑制負號,它只會指示無關噪音,並在更遠的位置保留十位小數?抑制 「減去零」 從COUT
(越少一般的情況下是cout << ...
。)
what is the best way to avoid negative zero in output?地址膚淺的問題。它的答案是四捨五入到有效數字之前傳遞到< <,這是一個大量的計算,「如果所有數字均爲零,只需將frickin減去」。
使用['setw'](http://en.cppreference.com/w/cpp/io/manip/setw)(右對齊輸出)或['showpos']可能會更好一些(http://en.cppreference.com/w/cpp/io/manip/showpos)(顯示'+'或'-')。 – dyp
是的,'showpos'閃爍+和 - 而不是空格和減號。閃爍少一個像素:-)。 –
'return(s.str()==「-0.000」)有什麼特別的錯誤嗎?字符串(「0.000」):s.str();'?還是這意味着承認失敗?在'cout'的情況下,你必須做'cout << fixmydouble(value);'。 –