2017-02-09 29 views
0

Цель этой программы - дать правильные изменения. Например:Отображение 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 без потери знаков после запятой в конце для расчет. Я уверен, что есть простой ответ на этот вопрос, я надеялся, что кто-то может сказать мне конверсию или указать мне в направлении того, где я могу найти ответ. Ни один из моих поисковых запросов не помог.

ответ

2

Используйте метод divideToIntegralValue класса BigDecimal, вместо divide. Это возвращает значение BigDecimal, значение которого является целым числом. Затем вы можете вычесть соответствующую сумму от money и продолжить.

+0

Невероятный ответ! Спасибо огромное! –