【发布时间】:2017-12-04 20:16:53
【问题描述】:
是否有任何优雅的解决方案使用std C++ 或Boost 库以满足以下条件的方式将double 输出到std::cout:
- 科学记数法被禁用
- 小数部分的精度为 6
- 但是,尾随
0(用于小数部分)不会打印出来
例如:
double d = 200000779998;
std::cout << `[something]` << d;
应该准确地打印出200000779998。 [something] 应该是 noexcept 一些现有操纵器的组合。
这不是解决问题的方法:
std::cout << std::setprecision(6) << std::fixed << d;
因为它会打印出200000779998.000000,并带有尾随0的
【问题讨论】:
-
如果小数部分非零,即非整数,您是否希望打印出来?即 12345.67
-
我解决了这个问题
-
@skypjack 否。OP 希望将
3.14打印为3.14,而不是3.140000。 OP 希望最多支持 6 位小数,这样3.14159265将打印为3.141592(可能是四舍五入,对我的解释不重要),3.1451将打印为3.1451 -
@贾斯汀你是对的。只需重新阅读问题。我的错。 ;-)
-
@MoonMoo 是的,如果为 0(给定精度),则不应该看到小数部分