在保持原始值的同时将BigDecimal显示为整数

时间:2017-02-09 03:41:24

标签: java type-conversion bigdecimal

该计划的目的是给予正确的改变。例如:

输入:$ 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而不会丢失最后的小数位以进行计算。我确信这有一个简单的答案,我希望有人可以告诉我它的转换,或指向我找到答案的方向。我的搜索查询都没有帮助。

1 个答案:

答案 0 :(得分:2)

使用divideToIntegralValue课程的BigDecimal方法代替divide。这将返回BigDecimal,其值为整数。然后,您可以从money中减去适当的金额并继续。