Luc*_*tti 3 java type-conversion bigdecimal java-8 long-integer
我必须将Long(对象一,包含在变量'longValueToConvert'中)转换为BigDecimal.
我会做这样的事情:
new BigDecimal(longValueToConvert)
Run Code Online (Sandbox Code Playgroud)
但是我已经读过这个转换可能会导致转换错误,并且在将它用于BigDecimal构造函数之前,它更倾向于将Long转换为String.
new BigDecimal(longValueToConvert.toString())
Run Code Online (Sandbox Code Playgroud)
使用第一个或第二个是否可取?我使用Java 8.
Tun*_*aki 11
你听错了 BigDecimal(long)
构造函数没有转换错误.A long
可以准确表示,并且没有问题BigDecimal
.
只有在使用BigDecimal(double)
构造函数时才需要小心.这是因为某些double
值无法准确表示.从文档:
这个构造函数的结果可能有点不可预测.有人可能会认为
new BigDecimal(0.1)
用Java 编写会创建一个BigDecimal
完全等于0.1
[...]但实际上等于0.1000000000000000055511151231257827021181583404541015625
.这是因为0.1
无法准确表示为double
[...].该
String
构造,在另一方面,是完全可以预测的:写作new BigDecimal("0.1")
创建的BigDecimal正好等于0.1
,正如人们所期望的那样.因此,通常建议优先使用String构造函数.
归档时间: |
|
查看次数: |
564 次 |
最近记录: |