【发布时间】:2021-06-01 13:00:00
【问题描述】:
当需要从Quantity 中取回一个数字时,getValue() 返回一个Number,它可以转换为int、double、float、long 或short。似乎很奇怪,没有办法将它作为BigDecimal。我错过了什么还是有充分的理由不将其作为BigDecimal 获得?
【问题讨论】:
-
java.measure的实现在哪里?我想这是因为他们想使用原始值来保持一切快速和简单。 BigDecimal 方法可能会变得非常慢,因为它基本上可以是一个无限大的数字。
-
BigDecimal是Number的子类,因此getValue()可以返回BigDecimal。这取决于实施。至于为什么会这样,反过来想。如果您指定getValue()始终返回BigDecimal,那么任何实现都不能返回任何不是BigDecimal的东西。如果用浮点数描述某个数量更有意义怎么办?没有这个选项会很烦人。 -
@BenjaminM
Quantity的实现在 Indriya 模块中。其中之一是基于BigDecimal,这就是为什么我必须使用new BigDecimal(quantity.getValue().toString())才能让BigDecimal退出似乎很奇怪。