小编Mr.*_*ike的帖子

可以在BigDecimal上下文中准确使用带有小整数值的double初始化吗?

有充分证据表明,使用double会导致不准确,只要混合中没有双打,BigDecimal就能保证准确性.

但是,如果双重问题是一个小的整数,是否保证了准确性?

例如,虽然以下内容不准确/不安全:

BigDecimal bdDouble = new BigDecimal(0.1d); // 0.1000000000000000055511151231257827021181583404541015625
Run Code Online (Sandbox Code Playgroud)

以下内容总是准确/安全吗?

BigDecimal bdDouble = new BigDecimal(1.0d); // 1
Run Code Online (Sandbox Code Playgroud)

假设使用BigDecimals可以安全地使用小的整数双打是否安全 - 如果是这样,引入不准确性的最小整数是多少?

>>回复初步答案的其他信息:

谢谢你的回答.很有帮助.

只是为了添加更多细节,我有一个提供双打的遗留接口,但我可以肯定这些双打将代表整数,它们自己通过Double.parseDouble(String)从Strings转换为double,其中String是保证的整数表示.

如果我可以避免它,我不想创建一个新的接口,它传递我的字符串或BigDecimals.

我可以立即将double转换为我接口上的BigDecimal,并使用BigDecimal调用进行所有内部计算,但我想确保它与创建新的BigDecimal/String接口一样安全.

鉴于在我的原始示例中使用0.1d并不能准确地得出0.1,如实际BigDecimal为0.1000000000000000055511151231257827021181583404541015625这一事实所示,似乎某些分数会引入不准确性.

另一方面,鉴于在我的原始示例中使用1.0d确实准确地得到1,看起来整数保持准确性.如果我正确理解你的答案,似乎保证最高值为2 ^ 53.

这是正确的假设吗?

java double bigdecimal

5
推荐指数
1
解决办法
422
查看次数

标签 统计

bigdecimal ×1

double ×1

java ×1