如何在Java中区分BigDecimal和Double

3
我正在编写一款财务应用程序,在其中获取字符串值并需要检查该值是否能够转换为double或BigDecimal类型而不会丢失数据。
有什么最好的方法来确定是否将字符串值转换为double或BigDecimal?
1个回答

12
如果涉及到金融价值,你几乎总是应该使用BigDecimal - 或者使用带有隐式比例值的整数(例如存储美分而不是美元)。
对于金融应用程序,浮点二进制点(float,double)几乎从来不适用,因为这些值通常具有精确的十进制值,而这些十进制值在浮点二进制中无法准确表示。
这并不意味着double是一种无用的数据类型 - 对于像距离这样的自然连续值它很好用。它只是不适合“人工”离散值,这些值通常以十进制形式指定。

1
Jon的答案是正确的。如果你仍然想这么做,把值当作BigDecimal处理,然后将其转换为double,并确保double和BigDecimal仍然相同。但是不要烦恼,使用BigDecimal即可。 - Geek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接