该计划的目的是给予正确的改变。例如:
输入:$ 45.54
产出:4个十美元钞票, 1五美元钞票, 2宿舍, 4便士。
现在回答我的问题:
我想将BigDecimal显示为一个整数而不会丢失原始值,因为我必须一直向下继续我的除法,直到我得到0.01便士。
我的当前代码如下:
BigDecimal tenDollar = BigDecimal.valueOf(10);
BigDecimal tenDollarNext;
BigDecimal fiveDollar = BigDecimal.valueOf(5);
BigDecimal fiveDollarNext;
/* Get Input From User */
System.out.print("Please enter the amount to be converted: ");
Scanner scan = new Scanner(System.in);
BigDecimal money = scan.nextBigDecimal();
NumberFormat usdFormat = NumberFormat.getCurrencyInstance(Locale.US);
usdFormat.setMinimumFractionDigits(2);
usdFormat.setMaximumFractionDigits(2);
System.out.println("Amount you entered: " + usdFormat.format(money));
/* Begin Processing and Displaying Information */
tenDollarNext = money.divide(tenDollar);
System.out.println(tenDollarNext + " Ten Dollar Bills");
fiveDollarNext = tenDollarNext.divide(fiveDollar, 0, RoundingMode.FLOOR);
System.out.println(fiveDollarNext + " Five Dollar Bills");
最终显示:
Please enter the amount to be converted: 45.54
Amount you entered: $45.54
4.554 Ten Dollar Bills
0 Five Dollar Bills
我的目标是让4.554显示为4而不会丢失最后的小数位以进行计算。我确信这有一个简单的答案,我希望有人可以告诉我它的转换,或指向我找到答案的方向。我的搜索查询都没有帮助。
答案 0 :(得分:2)
使用divideToIntegralValue
课程的BigDecimal
方法代替divide
。这将返回BigDecimal
,其值为整数。然后,您可以从money
中减去适当的金额并继续。