double类型精度问题
使用别人接口文件,其中一个参数是金额double类型,
在运行过程老是产生误差,后来debug调试发现问题所在
比如:
double d1 = 1235.2
double d2 = 10.6
double d3 = d1-d2; //本应该d3=1224.6,调试发现d3=1224.5999999999999
然后d3作为接口参数之一送进去,在接口能运作是采用的是截位,直接把结果变成了1224.5,因此老是产生0.1的偏差
如果能让d3保证是1224.6,而不是1224.5999999999999
谢谢
在运行过程老是产生误差,后来debug调试发现问题所在
比如:
double d1 = 1235.2
double d2 = 10.6
double d3 = d1-d2; //本应该d3=1224.6,调试发现d3=1224.5999999999999
然后d3作为接口参数之一送进去,在接口能运作是采用的是截位,直接把结果变成了1224.5,因此老是产生0.1的偏差
如果能让d3保证是1224.6,而不是1224.5999999999999
谢谢
...全文
相关推荐
高精度算术运算工具类,解决double类型运算精度丢失问题BigDecimal
这种数据类型使用任意精度的整数表示浮点数,以此来避免浮点数运算(特别是使用double和float类型)时的精度损失问题。BigDecimal通常用于财务计算、货币运算以及需要高精度的小数计算中。
解决java数值范围以及float与double精度丢失的问题
三、解决float和double类型的精度问题要解决float和double类型的精度问题,可以使用以下方法:1.
double类型精度丢失;double转换到64位整数
然而,由于浮点数的二进制表示方式,当进行某些计算或转换时,可能会出现精度丢失的问题。标题提到的“double类型精度丢失;double转换到64位整数”就涉及到这一关键概念。
BigDecimal向Double转换
这种方法可以确保不会因为Double类型本身的限制而丢失精度。
Java用BigDecimal解决double类型相减时可能存在的误差
在Java编程语言中,`double`类型用于表示浮点数,但存在精度问题,尤其是在进行数学运算时。


