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);'。 –