为什么的也无法精准计算类型吗?

为什么的也无法精准计算类型吗?,第1张

不要使用double来构造BigDcimal对象。BigDecimal的构造函数有这样的描述:

这个构造函数的结果可能有些不可预测。人们可能会假设用Java编写会创建一个恰好等于0.1的(未缩放值为1,缩放比例为1),但它实际上等于0.1000000000000551151231257827021181583404541015625。这是因为0.1不能精确地表示为(或者,就此而言,表示为任何有限长度的二进制分数)。因此,传递给构造函数的值并不完全等于0.1,尽管看起来是这样。另一方面,构造函数是完全可预测的:正如预期的那样,编写会创建一个恰好等于0.1的。因此,通常建议优先使用字符串构造函数。因为double本身是不准确的,如果用double作为构造函数参数,BigDecimal对象也会不准确。比如用浮点数0.1构造BigDecimal对象,实际值是0.1000000000005511512357827218834441015625。因此,对于需要精确计算的情况,建议使用字符串构造函数。

总之,在需要精确浮点数计算的场景下,不要在任何地方使用double、float类型的变量,而是使用String类型创建BigDecimal。

欢迎分享,转载请注明来源:聚客百科

原文地址: https://juke.outofmemory.cn/life/612232.html

()
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-07-06
下一篇 2022-07-06

发表评论

登录后才能评论

评论列表(0条)

保存