我在我的应用程序中使用 BigDecimal 作为我的数字,例如,使用 JPA。我对“精度”和“比例”这两个术语做了一些研究,但我不明白它们到底是什么。
谁能解释一下 BigDecimal 值的“精度”和“比例”的含义?
@Column(precision = 11, scale = 2)
谢谢!
原文由 jpadilladev 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在我的应用程序中使用 BigDecimal 作为我的数字,例如,使用 JPA。我对“精度”和“比例”这两个术语做了一些研究,但我不明白它们到底是什么。
谁能解释一下 BigDecimal 值的“精度”和“比例”的含义?
@Column(precision = 11, scale = 2)
谢谢!
原文由 jpadilladev 发布,翻译遵循 CC BY-SA 4.0 许可协议
精度: 有效数字的总数
scale: 小数点右边的位数
有关详细信息,请参阅 BigDecimal
类文档。
原文由 hamena314 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
A
.
BigDecimal
由两个值定义:任意精度整数和 32 位整数 _标度_。BigDecimal
的值定义为精确:
因此, 精度 表示任意精度整数的长度。以下是一些具有相同标度但精度不同的数字示例:
在数字等于零(即 0.000)的特殊情况下,精度始终为 1。
规模:
这意味着“BigDecimal”的整数值乘以
.
下面是一些精度相同但标度不同的示例:
BigDecimal.toString:
toString
的方法根据比例和precision
BigDecimal
表现不同。 (感谢@RudyVelthuis 指出了这一点。)scale == 0
,则按原样打印出整数。scale < 0
,则始终使用 E-Notation(例如 5 scale -1 产生“5E+1”)scale >= 0
和precision - scale -1 >= -6
产生一个普通的十进制数(例如10000000比例1产生“1000000.0”)precision - scale -1
等于更多示例: