打印没有科学格式的双精度并四舍五入到最接近的整数[关闭]

Posted

技术标签:

【中文标题】打印没有科学格式的双精度并四舍五入到最接近的整数[关闭]【英文标题】:Print double without scientific format & rounded to nearest integer [closed] 【发布时间】:2016-05-23 10:29:37 【问题描述】:

我需要在不使用指数符号/部分的情况下打印四舍五入的整数。 我目前正在使用它来打印四舍五入的小数。

std::cout << std::llround(n) << n;

但是,对于大数字,它仍然会这样打印

1264744611.26474e+08

请给点建议? 我的问题与question 不同,因为它不考虑四舍五入。在尝试使用 llround 进行修复时,我得到的数字尾随 .000000

【问题讨论】:

Making C++ cout not use scientific notation的可能重复 不,因为它不负责四舍五入。我刚试过 llround & 一起固定。但数字尾随 .000000 n的值到底是什么,你想怎么打印,当前输出有什么不同? std::llround 返回long long。它不应该被格式化为浮点数。发布您可以编写的最小程序,该程序可以编译、链接和显示问题。 【参考方案1】:

查看您发送到 std::cout 的内容...

std::cout << std::llround(n) << n;

...两个值没有任何中间标点符号或空格。在它们之间放一个换行符或其他东西,我想你会发现代码正在做它应该做的事情。例如

std::cout << std::llround(n) << "\n" << n;

【讨论】:

以上是关于打印没有科学格式的双精度并四舍五入到最接近的整数[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

将双精度舍入到最接近的非次正规表示

如何四舍五入到最接近的十分位?

Bash:以人类可读格式将 unix 时间四舍五入到最接近的分钟

将分钟向下舍入到最接近的一刻钟

四舍五入到最接近的 N 数

如何在 C++ 中设置浮点变量的精度