开云手机站登录入口限时优惠 - 开云手机站登录入口

5个月前 (11-27)

不要使用double来构造一个BigDcimal对象。 同题参见BigDecimal的构造函数有这么一段说明:

The results of this constructor can be somewhat unpredictable. One might assume that writing in Java creates a which is exactly equal to 0.1 (an unscaled value of 1, with a scale of 1), but it is actually equal to 0.1000000000000000055511151231257827021181583404541015625. This is because 0.1 cannot be represented exactly as a (or, for that matter, as a binary fraction of any finite length). Thus, the value that is being passed in to the constructor is not exactly equal to 0.1, appearances notwithstanding.The constructor, on the other hand, is perfectly predictable: writing creates a which is exactly equal to 0.1, as one would expect. Therefore, it is generally recommended that the String constructor be used in preference to this one.由于double本身是不精确的,如果使用double作为构造函数参数,也会导致BigDecimal对象不精确,比如使用浮点数0.1来构造一个BigDecimal对象,它的实际值为 0.1000000000000000055511151231257827021181583404541015625,所以,需要精确计算的场景。 对照阅读推荐使用String类型的构造函数。

总之,在需要精确浮点数计算的场景,不要在任何地方使用double,float类型的变量,应该使用String类型来创建BigDecimal. 延伸阅读

你可能想看:

标签:bigdecimal
分享给朋友:

继续阅读

若需了解「开云手机站登录入口限时优惠」的上下文,可结合站内栏目与相关篇目交叉阅读。

栏目用于追新,文内链接用于对照细节。两者配合可减少漏读与重复检索。

继续浏览时优先选择同栏目或相近主题,避免被站外镜像带偏。

频道列表

wiki · 科技 · 文化 · 主页

页面按栏目组织。可先看导读,再进入相关篇目或返回列表。