如何在Java中识别BigDecimal和Double
我正在编写一个金融应用程序,其中获取一个值作为字符串,并需要检查该值是否可以在不丢失数据的情况下放入double或BigDecimal如何在Java中识别BigDecimal和Double,java,parsing,double,bigdecimal,Java,Parsing,Double,Bigdecimal,我正在编写一个金融应用程序,其中获取一个值作为字符串,并需要检查该值是否可以在不丢失数据的情况下放入double或BigDecimal 识别字符串值是否应转换为双精度或双精度十进制的最佳方法是什么?如果是财务值,则应始终使用BigDecimal-或使用带有隐式缩放值的整数(例如,存储美分而不是美元) 浮动二进制点(float,double)几乎不适用于金融应用程序,因为这些值通常具有精确的十进制值,而不能用浮动二进制点精确表示 这并不意味着double是一种无用的数据类型-对于自然的、连续的值(
识别字符串值是否应转换为双精度或双精度十进制的最佳方法是什么?如果是财务值,则应始终使用
BigDecimal
-或使用带有隐式缩放值的整数(例如,存储美分而不是美元)
浮动二进制点(float
,double
)几乎不适用于金融应用程序,因为这些值通常具有精确的十进制值,而不能用浮动二进制点精确表示
这并不意味着
double
是一种无用的数据类型-对于自然的、连续的值(如距离)来说,这是很好的。这对于“人工”离散值来说是不好的,这些离散值通常是用十进制表示的。Jon的答案是正确的。如果仍要执行此操作,请将该值视为大小数,然后将其转换为双精度,然后确保双精度和大小数仍然相同。不过,不要为使用大小数而烦恼。