gpt4 book ai didi

java - Java中BigDecimal转Double时什么时候出现 "data loss"

转载 作者:行者123 更新时间:2023-11-30 02:11:18 28 4
gpt4 key购买 nike

我知道在 Java 中将 BigDecimal 值转换为 Double 时存在“精度问题”。使用 BigDecimal.doubleValue() 简单地从 BigDecimal 转换为 Double 时,何时会出现“数据丢失”?例如,如果我将 1.1 从 BigDecimal 转换为 Double 并将其打印出来,它会打印“1.1”,我认为没有数据丢失(BigDecimal 为 1.1,打印值为 1.1)。当以这种方式简单地从 BigDecimal 转换为 Double 时,什么情况下这两个值会不相同?

最佳答案

BigDecimal 具有您想要的精度。 double 具有 53 位二进制精度,即约 15.9 位十进制数字。因此,只要您的 BigDecimal 的有效数字超过 16 位,在转换为 double 时就会出现精度损失。

[这是指整数值。分数的情况要复杂得多,但事实仍然是 BigDecimal 具有无限精度,而 double 则没有。]

此外,double 具有最小值和最大值,由 Double.MIN_VALUE/MAX_VALUE 给出。 BigDecimal 两者都没有。

关于java - Java中BigDecimal转Double时什么时候出现 "data loss",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50013731/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com