优雅的解决方案,通过精确设置删除尾随 0
Elegant solution to remove trailing 0's with precision set
是否使用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;
因为它用尾声0
'S
200000779998.000000
代替使用fixed
操纵器,您可以尝试使用(滥用?)defaultfloat
。据我所知,它根据将数字放在指定的精度内的能力选择固定或科学。结果,您可以将精度设置为积分零件的数字 所请求的分数精度(在您的情况下为6)。
double d = 200000779998;
std::cout << std::setprecision(integralDigits(d) + 6) << d << std::endl;
您可以在这里尝试。
很难证明负面,但我假设否。
要求与任何正常使用不一致。空间效率决定了二进制格式。精确度的6位数字(十进制)表明,旨在为人类读者提供的格式,他们无法通过大量数据进行搅动。人类没有符合一致的6位数字格式的问题。
因此,您基本上是针对没有明显受众的格式的,这就是为什么如果有支持的话,我会感到惊讶的原因。
相关文章:
- 如何在自删除后将对象设置为nullptr
- 将指针设置为"nullptr"并不能防止双重删除?
- 复制后删除原始数组指针将前 3 个字节设置为 0
- 删除对象与将指针设置为 null
- 如何将项目属性设置为删除警告MSB8004:中间目录不会以落后的斜线结束
- 设置位置时QT删除对象()
- 删除地图并从标题中设置
- 在设置 if-else 语句以删除特定货币并保持更新时遇到问题
- QlistWidget删除选定的项目及其设置QT
- 优雅的解决方案,通过精确设置删除尾随 0
- 如何使用put_time()设置日期格式以删除前面的空格和零
- 设置没有删除重复项
- 删除指针并将指针设置为null之间有什么区别
- 设置/删除窗口子类时,正确传递/删除数据
- 当我要删除它时,指针甚至无法设置为null
- 当通过其中一个指针删除对象时,C++将所有指针设置为null
- 如何设置CMAKE_INTDIR或CMAKE_CFG_INTDIR来删除项目配置
- std::在C++中设置删除程序不起作用
- 当我替换对象时,我需要删除我在类成员中设置的对象吗
- 动态数组删除旧指针并将其设置为新数组C++