【发布时间】:2013-10-02 12:20:32
【问题描述】:
在 C++(或 boost lib)中有什么方法可以显示给定数字的小数部分?但我不想在小数部分打印尾随 0(例如1.000、1.500)。看这个案例:
cout << std::setprecision(3) << 5.0/7.0 << endl; // 0.714
cout << std::setprecision(3) << 12.0/7.0 << endl; // 1.71
cout << std::setprecision(3) << 7.0/7.0 << endl; // 1
cout << std::setprecision(3) << 10.5/7.0 << endl; // 1.5
问题是 setprecision 以不同方式打印第 1 行和第 2 行,我希望这两行都打印 0.714 和 1.714。并且仍然保留第 3 行和第 4 行 1 和 1.5。
【问题讨论】:
-
使用固定精度标志 std::fixed 得到精确的 3 位小数部分,然后将其转换为双精度/浮点数,并将其转换回字符串以消除尾随零也可以实现目标.但是没有干净的方法吗?
标签: c++ iomanip boost-format