从C ++中的函数返回双精度的问题

问题描述 投票:1回答:1

我有一个类似的功能:

double foo(int a, int b)
{
    double r=a+b;
    return r/2.0;
}

当a = 10000和b = 10001时,它工作正常。返回10000.5

但是当a = 100000 b = 100001时返回100000

我也用其他数字测试过。仅当整数小于6位时才有效。(在输出时不使用setprecision)

我也尝试过,但这没有帮助。

double r= double(a+b);

任何人都可以解释发生了什么吗?如果我在输出中使用setprecision,就不会有问题。

但是,我无法控制何时以及如何打印输出,我只需要提交此功能。有什么我可以做的吗?

c++ double precision
1个回答
0
投票

C double或long double缺省情况下在输出中使用6位精度。如果要编写2000.007,它将给出2000.01的输出,该值四舍五入为6位数字。但是在内存中它将具有正确的值。因此,正确的做法是

double foo(int a, int b)
{
    double r=a+b;
    cout<<setprecision(4)<<fixed;
    return r/2.0;
}
© www.soinside.com 2019 - 2024. All rights reserved.