Я получаю неправильный результат при выполнении деления с помощью BigDecimal. Number1 = 221500.0 Number2 = 12,0 Вот мой фрагмент кода:BigDecimal.Divide дает неверный результат
BigDecimal d1 = new BigDecimal(String.valueOf(number1)).setScale(13, 4);
BigDecimal d2 = new BigDecimal(String.valueOf(number2)).setScale(13, 4);
return (d1.divide(d2, 13, 4)).doubleValue();
18458,333333333332
, если я выполнил те же вычисления с помощью калькулятора дает 18458,333333333333333333333333333
Позвольте мне знать, какие проблемы с обрабатывая масштаб в BigDecimal. Будет полезно, если кто-то даст мне знать, как получить тот же результат с калькулятором.
Это правильный результат. Вам действительно нужен такой длинный результат? –
* Точный * такой же результат? Ваш калькулятор выплевывает только правильное количество 3s, или? На самом деле существует бесконечное количество 3-х. –
BigDecimal работает точно так, как должно быть, учитывая, что вам нужно 13 значений. Если ваши цели требуют «точных результатов деления», скажем, для целей сравнения, пожалуйста, умножьте на некоторое предопределенное пороговое значение и сравните как int. В вашем случае 'double' не может удерживать значение, поэтому округление. –