jpa*_*dev 55 java precision jpa scale bigdecimal
我在我的应用程序中使用BigDecimal作为我的数字,例如,使用JPA.我对"精确度"和"规模"这两个术语进行了一些研究,但我不明白它们究竟是什么.
任何人都能解释一下BigDecimal值的'precision'和'scale'的含义吗?
@Column(precision = 11, scale = 2)
Run Code Online (Sandbox Code Playgroud)
谢谢!
Aus*_*n D 78
A BigDecimal由两个值定义:任意精度整数和32位整数标度.BigDecimal定义的值是.
精确:
的精度是在标度值的位数.例如,对于数字123.45,返回的精度为5.
因此,precision表示任意精度整数的长度.以下是具有相同比例但精度不同的数字的几个示例:
在数字等于零(即0.000)的特殊情况下,精度始终为1.
规模:
如果为零或正数,则比例是小数点右侧的位数.如果是负数,则将数字的未缩放值乘以10来表示比例的否定.例如,标度为-3表示未标定值乘以1000.
这意味着'BigDecimal'的整数值乘以 .
以下是相同精度的几个示例,具有不同的比例:
BigDecimal.toString:
a的toString方法BigDecimal基于规模和行为不同precision.(感谢@RudyVelthuis指出这一点.)
scale == 0,整数只是按原样打印出来.scale < 0,总是使用E-Notation(例如5 scale -1产生"5E + 1")scale >= 0和生成precision - scale -1 >= -6一个普通的十进制数(例如10000000 scale 1产生"1000000.0")precision - scale -1等于更多例子:
精度是数字中有效数字的总数。比例是小数点右侧的位数。
例子:
123.456 精度=6 小数位数=3
10 精度=2 小数位数=0
-96.9923 精度=6 小数位数=4
0.0 精度=1 比例=1
负量表
对于负比例值,我们应用以下公式:结果 = (给定数字) * 10 ^ (-(比例值)) 示例
给定数字 = 1234.56
比例=-5
-> (1234.56) * 10^(-(-5))
-> (1234.56) * 10^(+5)
-> 123456000
参考:https://www.logicbig.com/quick-info/programming/ precision-and-scale.html