Что означает определение BigDecimal?

1

Первый абзац javadoc для BigDecimal гласит:

Неизменяемые знаковые числа с произвольной точностью. BigDecimal состоит из произвольного значения целочисленного целочисленного значения точности и 32-разрядной целочисленной шкалы. Если ноль или положительный, масштаб - это число цифр справа от десятичной точки. Если отрицательное значение, немасштабированное значение числа умножается на десять на силу отрицания шкалы. Таким образом, значение числа, представленного BigDecimal, (немасштабированное значение × 10-масштаб)

Может кто-нибудь объяснить, что это значит, особенно бит, начинающийся с "If negative", но предпочтительно все это? Я думаю, что "масштаб" означает числа после десятичной точки, но означает ли это, что "немасштабированный" - это остальная часть его?

  • 0
    Вы знаете, что такое float и / или double ? Я имею в виду, как они хранятся.
  • 0
    Я знаю, что нехорошо использовать их для вычислений, где важна точность, но я не знаю, как они хранятся внутри.
Теги:
math

1 ответ

2
Лучший ответ

Масштаб означает мощность десяти, по которой умножается величина числа. Мощность может быть положительной или отрицательной. Когда мощность отрицательна k, соответствующая отрицательная мощность десяти - это доля с 1 в числителе, а знаменатель - 10 k. Для этого просто положительный масштаб k означает умножение на 10 k раз; отрицательный масштаб -k означает деление на 10 k раз.

Вот некоторые примеры:

magnitude scale    value
--------- ----- -------------
1.2345678   -3   0.0012345678
1.2345678   -2   0.012345678
1.2345678   -1   0.12345678
1.2345678    0   1.2345678
1.2345678    1   12.345678
1.2345678    2   123.45678
1.2345678    3   1234.5678

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

  • 0
    Ах .. так что «масштабирование» - это операция, и BigDecimal сохраняет свои значения в виде целых чисел, а затем масштабирует их для представления десятичных дробей? Таким образом, «немасштабированное» значение - это значение до масштабирования, а «масштаб» означает размер масштабирования. Я думаю, я понял это сейчас. Спасибо!
  • 0
    @ user384842 BigDecimal хранит два операнда (величину и масштаб) отдельно. Эти два значения вместе представляют фактическое значение BigDecimal . Это представление позволяет BigDecimal избегать хранения большого количества начальных и / или конечных нулей для действительно больших чисел или действительно маленьких чисел.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню