You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中打印double值时出现意外舍入的问题排查

问题分析:C++浮点数相乘输出无小数部分的原因

这不是浮点数计算的问题,也和设备无关,核心是C++的cout默认的浮点数输出精度限制。

你代码里的r * z计算结果确实是带小数的double值(和计算器、Python得到的结果一致),但cout默认只输出6位有效数字,并且会自动省略末尾的小数部分。你的计算结果128787.690038...在默认精度下会被四舍五入为128788,所以看不到小数。

解决方法

要显示完整的小数部分,需要手动设置输出精度,使用std::fixed和std::setprecision(需要包含<iomanip>头文件):

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    double r = 50.5;
    double z = 2550.25128788;
    // fixed表示固定小数位数,setprecision(6)表示保留6位小数
    cout << fixed << setprecision(6) << r * z << "\n";
    // 输出结果:128787.690038
}

为什么Python不会出现这个问题?

Python的print函数默认会输出浮点数的全部有效位数(或足够多的位数),不会像C++的cout那样默认限制精度,所以能直接看到带小数的结果。

内容的提问来源于stack exchange,提问作者youlikecodingstackoverflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 07:14:51