double 小数点后允许的最大位数
Posted
技术标签:
【中文标题】double 小数点后允许的最大位数【英文标题】:Maximum allowed digits after decimal for double 【发布时间】:2014-06-10 01:55:57 【问题描述】:嗨,
我想知道小数点后允许多少位数 java中原始双精度数据类型的点,实际上没有得到 四舍五入。
【问题讨论】:
这不是小数点后数字的问题,而是一般的“有效数字”。至少要 10 点。 【参考方案1】:这取决于数量;阅读floating point representations 了解更多信息。
使用BigDecimal 类进行固定比例运算。
【讨论】:
【参考方案2】:从字面上看,这个数字是 0。大多数小数点后至少有一位数的小数在转换为双精度数时会四舍五入。例如,小数 0.1
在转换为 double 时会四舍五入为 0.1000000000000000055511151231257827021181583404541015625
。
问题在于 double 是二进制浮点系统,大多数小数不能精确表示,而 1/3 可以精确表示为有效位数有限的小数。
如前所述,如果小数的真正精确表示很重要,请使用BigDecimal
。
对于普通数字,原始双精度数有 53 个有效位,大约 15.9 个十进制数字。如果非常非常接近足够好,您可以使用双精度。
【讨论】:
以上是关于double 小数点后允许的最大位数的主要内容,如果未能解决你的问题,请参考以下文章
Single与Double分别能保留都少位小数?多少位数? 如题
java中double类型数组保留小数点后位数问题!!!!!