Округлите число до 5 центов до java - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь выяснить, как округлить денежную единицу, используя следующие правила:

 Tax calculated | Taxe imputed |
|---------------|--------------|
|          0.99 |         1.00 |
|          1.00 |         1.00 |
|          1.01 |         1.05 |
|          1.02 |         1.05 |

Я пробовал различные способы округления, но всегда получаю ошибку:

У меня есть 2 книги на 12,49 € с налогом 10%; и один компакт-диск на 14,99 € с налогом 20%

Я пробовал этот метод, но всегда получаю ложный результат

double number = 12.49 * 0.1 * 2;
double number2 = 14.99 * 0.2;
double round1 = Math.round(number * 100.0 /5.0) * 5.0 / 100.0;
double round2 = Math.round(number2 * 100.0 /5.0) * 5.0 / 100.0;

консольная печать 5,5 (round1 + round2), но я должен получить 5,53

Помогите пожалуйста

1 Ответ

1 голос
/ 21 января 2020

(double)Math.round(value * 100000d) / 100000d

Это с точностью до 5 цифр. Число нулей указывает количество десятичных знаков.

пожалуйста, посмотрите this (вопрос переполнения стека) и this (oracle документация)

double round1 = Math.round(number * 100.0 /5.0) * 5.0 / 100.0;
double round2 = Math.round(number2 * 100.0 /5.0) * 5.0 / 100.0;

так что, либо вы должны пересмотреть положение скобок (переупорядочить значения), либо, пожалуйста, сначала использовать другую переменную без округления, а затем выполнить операцию round ().

в этом случае просто,

double round1 = Math.round(number * 1000.0 /5.0) * 5.0 / 1000.0;
double round2 = Math.round(number2 * 1000.0 /5.0) * 5.0 / 1000.0;

может решить проблему, но лучше сделать это правильно, чтобы она оставалась значимой позже.

...