gpt4 book ai didi

C++ 初学者 : Returning a single value. 问题:我的金额四舍五入,我不希望它四舍五入

转载 作者:行者123 更新时间:2023-11-27 23:08:17 24 4
gpt4 key购买 nike

我正在做一个返回单个值的练习。它似乎工作正常,除了它返回一个四舍五入的值而不是精确到小数点后两位的值。我如何强制它返回准确的值?

编辑:我更改了以下几行:

 total = a * 1 + b * 5 + c * 10 + d * 25;
cout << "\nThe total number of dollars is $" << fixed << setprecision(2)
<< dollar/100 << endl;

这是可以接受的还是笨拙的解决方法?

我的代码:

int totAmt(double, double, double, double);

int main()
{
double pennies, nickels, dimes, quarters, dollar;

cout << "\nEnter the number of pennies: ";
cin >> pennies;
cout << "\nEnter the number of nickels: ";
cin >> nickels;
cout << "\nEnter the number of dimes: ";
cin >> dimes;
cout << "\nEnter the number of quarters: ";
cin >> quarters;

dollar = totAmt(pennies, nickels, dimes, quarters);

cout << "\nThe total number of dollars is $" << fixed << setprecision(2)
<< dollar << endl;

return 0;
}

int totAmt(double a, double b, double c, double d)
{
double total;
total = a * .01 + b * .05 + c * .1 + d * .25;

return total;
}

最佳答案

返回 double 值。从 double 到 int 的转换会进行舍入,或者更准确地说,它会进行截断。

double totAmt(double a, double b, double c, double d)
{
double total;
total = a * .01 + b * .05 + c * .1 + d * .25;

return total;
}

正如 Ed Heal 在评论中所述,您应该使用 int 来存储美元金额(以美分或根据您的货币的最小值),但将所有金额乘以 100 以进行准确计算. Float 和 double 不是完全精确的,因为它们是二进制表示。

编辑

根据您的新计算,要准确显示金额,您可以使用:

total = a * 1 + b * 5 + c * 10 + d * 25;
cout << "\nThe total number of dollars is $" << total/100 << "." << total%100 << endl;

关于C++ 初学者 : Returning a single value. 问题:我的金额四舍五入,我不希望它四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21807464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com