BigDecimal的未缩放值是多少?

Cho*_*ung 1 java bigdecimal

我正在阅读BigDecimal的文档,我不明白什么是未缩放的 含义.谁能用一个例子向我解释一下?谢谢.

这是上下文

不可变的,任意精度的带符号十进制数.BigDecimal由任意精度整数非标度值和32位整数标度组成.如果为零或正数,则比例是小数点右侧的位数.如果是负数,则将数字的未缩放值乘以10来表示比例的否定.

JB *_*zet 9

BigDecimal由任意精度整数非标度值和32位整数标度组成

unscaled integer value of arbitrary precision: 87866787879879879768767554645434
scale: 3
Run Code Online (Sandbox Code Playgroud)

如果为零或正数,则比例是小数点右侧的位数.

actual decimal value: 87866787879879879768767554645.434
Run Code Online (Sandbox Code Playgroud)

如果是负数,则将数字的未缩放值乘以10来表示比例的否定.

unscaled integer value: 87866787879879879768767554645434
scale: -3
actual decimal value: 87866787879879879768767554645434000
Run Code Online (Sandbox Code Playgroud)

  • 由于数量巨大在这里并不重要,因此可以用更小的数字来清楚,例如`123456`. (4认同)
  • 我想强调的是,这里的“整数”一词必须是数学意义上的,而不是Java意义上的。未缩放的值不是 32 位 Java int。 (2认同)
  • 缩放后的整数就是结果:十进制值。即未缩放的整数,已对其应用缩放以将其转换为十进制值。正如满杯是你已注满的空杯,或者空杯是你已倒空的满杯。 (2认同)

San*_*tra 5

BigDecimal是具有 32 位整数范围的任意精度整数,即在此输入图像描述

例如 -

  1. 878667 是一个未缩放的整数值,其精度(有效位数)为 6。应用 2 的缩放后,即在此输入图像描述-> 8786.67(输出)。应用-2 的比例后,即在此输入图像描述-> 87866700(输出)。
  2. 0.0000009 是一个缩放整数值,精度为 1(有效位数),小数位数为 7,因此未缩放的值 -> 9 即在此输入图像描述