2401_82354013 2024-02-01 13:19 采纳率: 50%
浏览 15
已结题

double✖️double得出来的结果是int型,怎么改

double a=159430;
double b=0.716;
a*=b;
cout<<a;
return 0; 

结果是114152,怎么做才能保证结果为114151.88

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-02-01 13:21
    关注

    引自免费微信小程序:皆我百晓生

    在C++中,double类型的乘法运算结果应当是double类型,并且通常能够保留足够的精度来表示小数部分。然而,当你输出一个带有小数点的double时,可能会由于浮点数的舍入误差和输出格式设置问题导致看上去不是预期的结果。

    对于你给出的代码片段:

    double a = 159430;
    double b = 0.716;
    a *= b;
    cout << a;
    return 0;
    

    这里的问题在于cout默认对double类型的输出精度有限。要解决这个问题,你可以使用std::setprecision函数来自定义输出的精度。下面是一个修改后的完整代码:

    #include <iostream>
    #include <iomanip> // 这个头文件包含了setprecision函数
    
    int main() {
        double a = 159430;
        double b = 0.716;
        a *= b;
    
        std::cout << std::fixed << std::setprecision(2) << a; // 设置输出精度为2位小数
    
        return 0;
    }
    

    这段代码将确保a乘以b的结果按照指定的小数位数(这里是2位)进行输出,因此理论上应该能得到接近于114151.88的结果。但请注意,即使设置了输出精度,实际的计算结果仍可能因为浮点数的内在表示方式而存在微小误差,不一定能精确得到114151.88这个数值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 2月14日
  • 已采纳回答 2月6日
  • 创建了问题 2月1日