提问人:Jin Kwon 提问时间:11/17/2023 最后编辑:Jin Kwon 更新时间:11/18/2023 访问量:65
如何使用左零焊盘格式化双倍?
How can I format double with left zero pads?
问:
我的值介于(包含)和(排除)之间。double
.0d
60.0d
如何设置左零填充的值格式?
例如
0.1234567
->00.1234567
5.12345678
->05.12345678
31.123456789
->31.123456789
59.0000000001....
->59.0000000001....
答:
3赞
Reilas
11/17/2023
#1
使用 DecimalFormat 类。
double[] a = { 0.1234567, 5.12345678, 31.123456789 };
DecimalFormat f = new DecimalFormat();
f.setMinimumIntegerDigits(2);
f.setMaximumFractionDigits(20);
for (double v : a) System.out.println(f.format(v));
输出
00.1234567
05.12345678
31.123456789
评论
1赞
Jin Kwon
11/17/2023
我们是否有任何定义的分数数字常数?谢谢。20
0赞
Reilas
11/18/2023
@JinKwon,我相信它是 16 位十进制数字。“......描述了十进制格式,与 32–128 位二进制格式的长度相匹配。这些给出了具有 7、16 和 34 位有效性的十进制交换格式......“,来自维基百科 – IEEE 754-2008 修订版 – Clause_3:格式。
-1赞
Jin Kwon
11/17/2023
#2
我目前正在使用以下逻辑解决我的问题。
double d = ...
var f = d % 1;
var i = d - f;
var formatted = String.format("%1$02d", i) +
BigDecimal.valueOf(f).toString().substring(1);
0赞
Oleg Cherednik
11/18/2023
#3
您可以通过以下方式轻松完成:String.format()
double num = 5.12345678;
System.out.println(String.format(Locale.US, "%f", num)); // 5.123457
System.out.println(String.format(Locale.US, "%.4f", num)); // 5.1235
System.out.println(String.format(Locale.US, "%7.4f", num)); // 5.1235
System.out.println(String.format(Locale.US, "%07.4f", num)); // 05.1235
评论
0赞
Jin Kwon
11/18/2023
%.f
如您所见,丢弃一些数字。我需要知道如何使用可选的左填充零和所有十进制数字进行打印。
评论
5.12345678
05.12345678