gpt4 book ai didi

Java:为什么 String.format() 不能处理这个 Long 变量?

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

我只是想用毫秒来显示变量的前两位数字。

我期望的工作(我最初看到两位数字,然后当它递增时我看到三位数字):

@Override
public String toString() {
Long milliSeconds = TimeUnit.MILLISECONDS.toMillis(elapsedTime) % 1000;
Long seconds = (TimeUnit.MILLISECONDS.toSeconds(elapsedTime));
return String.format("%2d.%02d seconds", seconds, milliSeconds);
}

真正有效的是:

@Override
public String toString() {
String milliSeconds = String.format("%02d",
TimeUnit.MILLISECONDS.toMillis(elapsedTime) % 1000).substring(0, 2);
Long seconds = (TimeUnit.MILLISECONDS.toSeconds(elapsedTime));
return String.format("%2d.%s seconds", seconds, milliSeconds);
}

或者:

@Override
public String toString() {
double milliSeconds = (double)(TimeUnit.MILLISECONDS.toMillis(elapsedTime) % 1000) / 1000;
Long seconds = (TimeUnit.MILLISECONDS.toSeconds(elapsedTime));
return String.format("%.2f seconds", seconds + milliSeconds);
}

我想我的第一个问题是我的解决方案是否比不占用更多资源?其次,我在第一个解决方案中做错了什么?我希望 %02d 取 long 并将其截断为用 0 缓冲的 2 位数字。相反,我看到的是两位数字加上尾随 0。

最佳答案

System.out.printf("%07.3f seconds", (elapsedTime / 1000f));

关于Java:为什么 String.format() 不能处理这个 Long 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23354359/

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