gpt4 book ai didi

java - 获取大双数的小数点前的数字

转载 作者:行者123 更新时间:2023-12-02 05:10:53 26 4
gpt4 key购买 nike

我正在尝试创建一个应用程序,该应用程序将返回双数小数点前的最后三位数字。在下面的示例中,结果应为 006。

  double number = 6.578336356630531E15;
int num = (int) number % 1000;
String output = String.format("%03d", num);
System.out.println(output);

但结果是:647

但是对于以下使用相同方法的结果是正确的:应返回 006。

  double number = 6.57833;
int num = (int) number % 1000;
String output = String.format("%03d", num);
System.out.println(output);

现在结果是正确的:006

所以我猜问题与第一个示例中的非常大的数字有关?但我需要处理这么大的数字。

有什么解释为什么会发生这种情况吗?干杯。

最佳答案

In the below example, the outcome should be 006

没有。它应该是 531,即值 6578336356630531 的最后三位数字。

但是 6578336356630531 几乎肯定太大,无法在不损失精度的情况下放入 double 中。 double 只有 53 位精度,即 15.9 位十进制数字。

将该值转换为 int 将导致进一步截断和精度损失。

关于java - 获取大双数的小数点前的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27349266/

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