gpt4 book ai didi

java - java.lang.Double 的精度损失

转载 作者:行者123 更新时间:2023-11-29 07:43:37 25 4
gpt4 key购买 nike

假设我有 2 个 double 值。一个很大,一个很小。

double x = 99....9;  // I don't know the possible max and min values,
double y = 0,00..1; // so just assume these values are near max and min.

如果我将这些值加在一起,我会失去精度吗?

换句话说,如果我给它分配一个 int 值,最大可能的 double 值会增加吗?如果我选择一个小的整数部分,最小可能的 double 值会减少吗?

double z = x + y;    // Real result is something like 999999999999999.00000000000001

最佳答案

double 值并非均匀分布在所有数字上。 double 使用数字的浮点表示,这意味着您有固定数量的位用于指数和固定数量的位用于表示实际的“数字”/尾数。

因此,在您的示例中,使用较大值和较小值会导致丢弃较小的值,因为它无法使用较大的指数表示。

不降低精度的解决方案是使用具有潜在增长精度的数字格式,如 BigDecimal - 它不限于固定位数。

关于java - java.lang.Double 的精度损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27839903/

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