gpt4 book ai didi

java - 0.05 结果显示 4 便士而不是 1 镍币

转载 作者:行者123 更新时间:2023-12-02 06:00:48 26 4
gpt4 key购买 nike

这是一个问题,要求我读取 double 值并确定代表该金额所需的最少纸币和硬币数量。

我得到了一个奇怪的结果。我把5.05作为moneytotal ,我得到 4应该是 1 的便士镍。

我认为这是一个舍入问题,但当问题指出使用 double 时,我不知道如何更改它。

        Scanner scan=new Scanner(System.in);

double moneytotal, ten, five, one, quarters, dimes, nickels, pennies;


System.out.println("Input number!");
moneytotal=scan.nextDouble();

ten= moneytotal % 10;
System.out.println((moneytotal -ten)/10 + " Ten Dollar
Bills.");

five=ten% 5;
System.out.println(((ten - five)/5) + " Five Dollar Bills.");

one = five % 1;
System.out.println((five - one) + " One Dollar Bills.");

quarters = one % 0.25;
System.out.println(((one - quarters)*4) + " Quarters.");

dimes= quarters % 0.10;
System.out.println(((quarters - dimes)*10) + " Dimes.");

nickels=dimes % 0.05;
System.out.println(((dimes - nickels)*20) + " Nickels.");

pennies=nickels % 0.01;
System.out.println(((nickels - pennies) * 100)+ " Pennies.");

实际结果:

input > 5.05

5 Ten Dollar bills.
0 5 Dollar bills.
0 1 dollar bills.
0 quarters.
0 dimes.
0 nickels.
4 pennies.

最佳答案

将其计算为 int 而不是 double,因为您可能会遇到有关类型更改的问题。在您的代码中,monytotal % 10 不是 0.5,因为 10 是 int,而 % 不适用于 double。我认为不同语言的结果会有所不同。

无论如何,还有更完美的方法如下:

int moneytotaln = moneytotal * 100

ten= moneytotaln % 1000;
System.out.println((moneytotaln -ten)/1000 + " Ten Dollar
Bills.");
// ...

关于java - 0.05 结果显示 4 便士而不是 1 镍币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55978632/

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