如何将Java Instant
作为带有1558766955.037的小数秒的时间戳打印出来?如示例所示,所需的精度为1/1000。
我尝试了(double) timestamp.getEpochSecond() + (double) timestamp.getNano() / 1000_000_000
,但是当我将其转换为字符串并打印时,它显示了1.558766955037E9
。
答案 0 :(得分:1)
您看到的结果是您想要获得的结果的secientific (e-) notation。换句话说,您得到了正确的结果,只需要在打印时正确格式化它即可:
Instant timestamp = Instant.now();
double d = (double) timestamp.getEpochSecond() + (double) timestamp.getNano() / 1000_000_000;
System.out.printf("%.2f", d);
答案 1 :(得分:1)
正如其他人指出的那样,这是格式问题。对于您的特定格式,您可以将get
与Formatter
一起使用,以支持点除分数:
Locale
打印:
Instant now = Instant.now();
double val = (double) now.getEpochSecond() + (double) now.getNano() / 1000_000_000;
String value = new Formatter(Locale.US)
.format("%.3f", val)
.toString();
System.out.print(value);
答案 2 :(得分:0)
System.out.printf("%.3f", instant.toEpochMilli() / 1000.0)
应该可以工作。