gpt4 book ai didi

javascript - Android 应用程序和 Javascript 代码之间的舍入差异

转载 作者:行者123 更新时间:2023-12-03 11:29:01 25 4
gpt4 key购买 nike

当尝试计算和舍入这些数字时,我得到两个不同的结果。 今天号码是336887昨天号码是336582。我在另一个字段上也遇到了类似的问题,但更新 Java 代码后,差异消失了。

Javascript代码:

    document.getElementById("txt1").value = ((today - yesterday) / 10000).toFixed(3);

Android 代码:

    public Double RoundDouble(Double num, Integer places)
{
Double temp = Math.pow(10.0, places);

num = num * temp;
Math.round(num);
num = num / temp;

return num;
}

Double total = RoundDouble((today - yesterday) / 10000,3);
txt1.setText(df.format(total ));

Javascript 代码返回 .031,而 Android 代码返回 .030。我做了数学计算,在四舍五入之前,数字是.0305。我不确定是什么导致了这个问题,因为我在另一个字段中正确地将 .0295 舍入到 .030 时遇到了问题。

最佳答案

小数 ((336887 - 336582)/10000) 不能表示为 IEEE-754 double 。如果您尝试 ((336887 - 336582)/10000).toFixed(20) 您将得到 0.03049999999999999933。Android 版本差异的原因可能是您处理 Math.round(num) 返回的方式:您忽略它。您可能会发现将该行更改为 num = Math.round(num); 更有用。也可以更改 rounding mode在安卓中。 ECMAScript 中的默认舍入模式是最接近偶数,在 Android 中为 HALF_EVEN。

关于javascript - Android 应用程序和 Javascript 代码之间的舍入差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26809387/

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