作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一个问题,要求我读取 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/
我想使用 NumberFormat 将 Double 转换为 String。我目前正在使用基于货币区域设置的 NumberFormat,但这会将 Double 四舍五入到小数点后两位。我怎样才能让它不
我尝试运行的这个程序遇到了问题。 该实验室将研究此类机器背后的问题解决和编程。 你总是想使用尽可能少的硬币。您应该使用整数数学来解决这个问题。 通过构造函数提供美分的数量。编写一个方法来计算每种硬币的
我是一名优秀的程序员,十分优秀!