【发布时间】:2021-11-18 19:11:25
【问题描述】:
如何在sum 输出中保持精度。我认为正在发生的事情是精度完全相同,但是一个选项选择舍入。
public class Main {
public static void main(String[] args) {
final long seconds = 1637208584L;
final long micro_of_second = 795307;
final long sum = seconds + micro_of_second;
System.out.println("seconds + micro_of_second: " + seconds + micro_of_second);
System.out.println("sum: " + sum);
System.out.println("equal?: " + (sum == seconds + micro_of_second));
}
}
输出
seconds + micro_of_second: 1637208584795307
sum: 1638003891
equal?: true
【问题讨论】:
-
"
System.out.println("seconds + micro_of_second: " + seconds + micro_of_second);" - 你觉得这条线是做什么的? -
顺便说一下,将日期时间作为一个纪元引用的计数来跟踪是容易出错的,并且本质上是模棱两可的,因此难以调试。我建议您改用 java.time 类中的对象,并以标准 ISO 8601 格式序列化为文本。这已在 Stack Overflow 上得到广泛解决,因此请搜索以了解更多信息。
Instant.ofEpochSecond( 1_637_208_584L ).plus( 795_307L , ChronoUnit.MICROS ).toString()…2021-11-18T04:09:44.795307Z
标签: java long-integer