当前位置: 首页 > 知识库问答 >
问题:

设置精度和浮点

彭浩穰
2023-03-14

运行以下代码时,我希望收到这样的输出:

Desired output:
Car     Hours    Charge
1        1.5      2.00
2        4.0      2.50
3       24.0     10.00

但结果如下:

Actual output:
Car     Hours    Charge
1        2       2
2        4       2.5 
3    2e+01      10

欢迎任何能指导我正确使用浮点比较和正确使用setprecision的建议。

int main()
{
    double hour[3];
    double charge[3];

    double sum_hour = 0;
    double sum_charge = 0;

    for (int i = 0; i < 3; i++)
    {
        cout<<"Enter the hours for car No. "<<i<<": ";
        cin>>hour [i];

        if (hour [i] <= 3)
            {charge [i] = 2.00;}
        if (hour [i] > 3 && hour [i] < 24)
            {charge [i] = (2.00 + (ceil(hour [i] -3))*0.5);}
        if (hour [i] == 24)
            {charge [i] = 10.00;}

        sum_hour  = sum_hour + hour [i];
        sum_charge = sum_charge + charge [i];
    }

    cout<<"Car"<<setw(10)<<"Hours"<<setw(10)<<"Charge"<<endl;

    for (int i = 0; i < 3; i++)
    {
        cout<<i+1<<setw(10)<<setprecision(1)<<hour[i]<<setw(10)<<setprecision(2)<<charge[i]<<endl;
    }
    cout<<"TOTAL"<<setw(6)<<sum_hour<<setw(10)<<sum_charge<<endl;

}

共有2个答案

伯茂才
2023-03-14

你需要函数固定使cout写位数时,只有'0'。

所以像这样使用它:

cout << fixed;
cout<<i+1<<setw(10)<<setprecision(1)<<hour[i]<<setw(10)<<setprecision(2)<<charge[i]<<endl;
漆雕奇逸
2023-03-14

std::setprecision默认设置显示的有效位数总数(包括小数点之前的位数)。

要设置小数点后显示的位数,请使用std::fixed

std::cout << std::fixed << std::setprecision(2) << 24.0;

将显示:

24.00
 类似资料:
  • 问题内容: 我从数据库中得到一个数字,这个数字可能是或。 我需要将数字的小数精度设置为,这会使数字不超过(关于小数)或。 使用PHP 我看到一个问题: 四舍五入数字。我需要一个仅将小数点缩短而不改变其值的函数,而这些值似乎不遵循。 问题答案: 您可以用来实现以下目的: 这将转换为。 但是,如果您只想将小数位数缩短到3,而 不是 四舍五入,则可以执行以下操作: 乍一看可能令人生畏,但是这个概念确实很

  • 我想在C中设置浮点的精度。假设我的代码是 < code>float a = 23.5,b = 24.36浮动c = a b; 如果我发表了这个 它给出:46.86 但我想打印到小数点后一位。怎么做?

  • 问题内容: $a = ‘35’; $b = ‘-34.99’; echo ($a + $b); 结果为0.009999999999998 这是怎么回事?我想知道为什么我的程序不断报告奇怪的结果。 为什么PHP不返回预期的0.01? 问题答案: 因为浮点运算!=实数运算。对于一些浮子和,由不精确性引起的差异的说明是。这适用于使用浮点数的任何语言。 由于浮点数是具有有限精度的二进制数,因此存在有限数量

  • 本文向大家介绍Fortran 浮点数精度,包括了Fortran 浮点数精度的使用技巧和注意事项,需要的朋友参考一下 示例 类型的浮点数real不能有任何实数值。它们可以表示实数,最多可以包含一定数量的十进制数字。 FORTRAN 77保证了两种浮点类型,而最新的标准则至少保证了两种实数类型。实变量可以声明为 x这是默认类型的实数,并且y是比更大的十进制精度的实数x。在Fortran 2008中,十

  • 我不明白为什么浮点值与双精度值不同。从下面的示例来看,对于相同的操作,float 提供的结果似乎与双精度型不同: 输出: 你能解释一下float和double之间的区别吗?