Как заменить двойники на BigDecimal для денег в Java - PullRequest
3 голосов
/ 25 декабря 2011

Я выполняю задание в колледже, где я использовал двойные деньги. Я знаю, что не рекомендуется использовать double для денежных значений, поэтому мне интересно, как я могу заменить существующий код, который имеет double, на BigDecimal.

Поскольку это задание колледжа, мне не нужна была прямая помощь по моему коду, и я не хотел публиковать его здесь, поэтому я создал следующий код, на который я был бы признателен за прямые ответы, т.е. изменил код Я предоставляю, чтобы я мог понять, что происходит.

Мне интересно, как BigDecimal можно умножить / разделить / сложить / вычесть с помощью int или double или если это даже невозможно.

Существуют и другие темы, касающиеся использования BigDecimal, но они не охватывают мой конкретный вопрос, однако я прошу прощения, если я пропустил сообщение, на которое уже был дан ответ.

Вот код:

import java.util.Scanner;
import java.text.NumberFormat;

class example {
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    NumberFormat fm = NumberFormat.getCurrencyInstance();

    System.out.println("Enter the first amount:");
    double money1 = in.nextDouble();
    System.out.println("Enter the second amount:");
    double money2 = in.nextDouble();
    System.out.println("Enter the third amount:");
    double money3 = in.nextDouble();

    double tax = 0.2;
    double totalmoney = money1 + money2 + money3;
    double moneytax = (totalmoney)*tax;


    System.out.println("Your money added together is: " + fm.format(totalmoney));
    System.out.println("Tax on your money is: " + fm.format(moneytax));
    System.out.println("Your money after tax deduction is: " + fm.format((totalmoney-moneytax)));
    }
}

Ответы [ 3 ]

3 голосов
/ 25 декабря 2011

Если вы хотите избежать использования double, вам не следует использовать его с самого начала.

BigDecimal money1 = new BigDecimal(in.nextLine());

Вы должны увидеть, что результат после округления будет точно таким же.

3 голосов
/ 26 декабря 2011

Альтернативой BigDecimal может быть выполнение всех вычислений в центах с использованием длинных букв и просто вставка десятичной точки в конце.

1 голос
/ 25 декабря 2011

BigDecimals являются неизменяемыми, но вы можете создавать новые с конкретными вызовами:

BigDecimal two = new BigDecimal("2.00");
BigDecimal four = new BigDecimal("4.00");

BigDecimal result = four.divide(two);

Возможно, вы также захотите взглянуть на методы scale ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...