Java new BigDecimal генерирует другое число

Я использую тип данных BigDecimal, когда я устанавливаю

new BigDecimal(21.30);

затем я вернул его как источник xml, он отображается как

21.30000000000710522735760100185871124467578125

Другой номер

new BigDecimal(23.11)

вернулся

23.1099999994315658113818187512921995859375

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

Не могли бы вы предоставить код, с помощью которого вы создаете XML в форме минимальный воспроизводимый пример?

bracco23 22.05.2019 15:09

Вы пробовали new BigDecimal("21.30"); и new BigDecimal("23.11");

KevinO 22.05.2019 15:11
Основы программирования на Java
Основы программирования на Java
Java - это высокоуровневый объектно-ориентированный язык программирования, основанный на классах.
Концепции JavaScript, которые вы должны знать как JS программист!
Концепции JavaScript, которые вы должны знать как JS программист!
JavaScript (Js) - это язык программирования, объединяющий HTML и CSS с одной из основных технологий Всемирной паутины. Более 97% веб-сайтов используют...
0
2
98
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

The results of this constructor can be somewhat unpredictable. One might assume that writing new BigDecimal(0.1) in Java creates a BigDecimal which is exactly equal to 0.1 (an unscaled value of 1, with a scale of 1), but it is actually equal to 0.1000000000000000055511151231257827021181583404541015625.

This is because 0.1 cannot be represented exactly as a double (or, for that matter, as a binary fraction of any finite length). Thus, the value that is being passed in to the constructor is not exactly equal to 0.1, appearances notwithstanding.

Если вы проверите java-документ BigDecimal, вы обнаружите, что вам придется использовать конструктор, который принимает параметр String, чтобы получить нужное вам поведение.

Просто добавить new BigDecimal("23.11") было бы неплохо. Используйте обратные кавычки `, чтобы цитировать код внутри другого текста. Используйте отступ с 4 пробелами для кодовых блоков.

Joop Eggen 22.05.2019 15:16

Приведенный выше текст взят из документация конструктора.

VGR 22.05.2019 16:21

Другие вопросы по теме