gpt4 book ai didi

java - 具有长值的 Math.round/Divide 问题

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:03 24 4
gpt4 key购买 nike

我在将 long 值除以 1000 并将其四舍五入为整数时遇到问题。

我的长值是:1313179440000

我的代码是

long modificationtime = 1313179440000;
Math.round(modificationtime/1000l)

如果我打印出除法和格式化后的值,它会返回:1313179392

所以。

value   : 1313179440000
expected: 1313179440
got : 1313179392

我不知道为什么会这样。谁能帮帮我?

最好的问候,公关

最佳答案

Math.round(float) 正在被使用。 float 的范围比长整型大,但它不能表示该范围内的所有整数——在本例中整数 1313179440(除法的原始结果)位于在范围内超过整数精度的部分。

  1. 不要使用 Math.round,因为它不需要(输入已经是一个整数!),或者;

  2. 使用 Math.round(double),如:Math.round(modificationTime/1000d)。请注意,除数是 double ,因此表达式的被除数(和结果)也被提升为 double 。

快乐编码。

关于java - 具有长值的 Math.round/Divide 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7209510/

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