大十进制、精度和小数位数
2022-08-31 10:33:31
我在应用程序中使用BigDecimal作为我的数字,例如,使用JPA。我对术语“精度”和“尺度”进行了一些研究,但我不明白它们到底是什么。
谁能解释一下BigDecimal值的“精度”和“刻度”的含义?
@Column(precision = 11, scale = 2)
谢谢!
我在应用程序中使用BigDecimal作为我的数字,例如,使用JPA。我对术语“精度”和“尺度”进行了一些研究,但我不明白它们到底是什么。
谁能解释一下BigDecimal值的“精度”和“刻度”的含义?
@Column(precision = 11, scale = 2)
谢谢!
A 由两个值定义:任意精度整数和 32 位整数刻度。的值定义为 。BigDecimal
BigDecimal
精度:
精度是未缩放值中的位数。例如,对于数字 123.45,返回的精度为 5。
因此,精度表示任意精度整数的长度。以下是具有相同刻度但精度不同的数字的几个示例:
在数字等于零(即0.000)的特殊情况下,精度始终为1。
规模:
如果为零或正,则小数位数为小数点右边的位数。如果为负,则数字的未缩放值乘以 10 的平数的幂。例如,小数位数为 -3 表示未缩放的值乘以 1000。
这意味着“大十进制数”的整数值乘以 。
以下是一些具有相同精度且具有不同刻度的示例:
BigDecimal.toString:
的方法的行为因刻度和 不同。(感谢@RudyVelthuis指出这一点。toString
BigDecimal
precision
scale == 0
scale < 0
scale >= 0
precision - scale -1 >= -6
precision - scale -1
更多示例: