gpt4 book ai didi

java - 舍入误差?

转载 作者:行者123 更新时间:2023-11-29 08:07:34 26 4
gpt4 key购买 nike

您好,我在为学校作业创建零钱计算器时遇到问题。本质上是计算一定数量的钱最少需要找零多少。

  • 例如。 5.36 美元:
  • 2 个香椿(2 美元)
  • 1 加元(1 美元)
  • 1 个季度
  • 1 角钱
  • 0 分
  • 1 便士

我已将所有变量声明为 double ,这样我就可以一起计算值和总数。它似乎对整数(5.00、6.00、7.00)工作正常,但每当我添加小数位时就会搞砸。就像当我说 5.25 美元时,它应该说 2 toonies 1 loonie 和 1 quarter。我认为这可能是四舍五入的错误或我的计算有问题。任何帮助表示赞赏。下面是代码的计算:

//Rounding to one number           
DecimalFormat oneDigit = new DecimalFormat ("#,0");

//Ask user for input
String moneyinput = JOptionPane.showInputDialog ("Welcome to the Change Caluculator. "
+ "Please Enter your amount of money in Dollars ($): ");

//Take user input and create into string.
totmoney = Double.parseDouble (moneyinput);

//Calculate number of toonies
numtoonies = (totmoney/toonieval);

System.out.println ("There is a total of " + oneDigit.format (numtoonies) + " toonies.");

//Find new amount
totmoney = (totmoney%toonieval);

//Calculate the number of loonies
numloonies = (totmoney/loonieval);

//Find new amount
totmoney = (totmoney-numloonies);

System.out.println ("There is a total of " + oneDigit.format (numloonies) + " loonies.");

//Calculate number of quarters
numquarters = (totmoney/quarterval);

//State the about of Coins
System.out.println ("There is a total of " + oneDigit.format (numquarters) + " quarters.");
}

最佳答案

我不太明白您为什么要使用 DecimalFormat。你应该能够只用 mod % 和 division / 来解决这个问题。

这就是我解决这个问题的方法:

  1. 接受用户的输入(格式为 5.33 的 double 值)
  2. 通过移动小数位将其保存为 int(int 值 = cost * 100)
  3. 使用除法 (numToonies = value/toonieval) 求 toonies 的数量
  4. 通过 (value = value % toonieval) 找到剩余的金额
  5. 对其他面额重复步骤 3 和 4

注意:您必须修改卡通符号的值以反射(reflect)您使用的价格乘以 100 这一事实。

关于java - 舍入误差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10133996/

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