有没有使用EXPONENTIAL PRECISION进行打印的方法? 我需要用微小的数字填充一些数据并比较后......
我喜欢这个:
(0) - Mesured estimatedTime for multithread in block: 1.4917951E16 s
(1) - Mesured estimatedTime for multithread in block: 7.531891E15 s
(2) - Mesured estimatedTime for multithread in block: 2.9287E13 s
(3) - Mesured estimatedTime for multithread in block: 3.28478435E17 s
(4) - Mesured estimatedTime for multithread in block: 6.038E12 s
我想像这样打印:
(0) - Mesured estimatedTime for original in block: 0000.15595175E15 s
(1) - Mesured estimatedTime for original in block: 0007.335638E15 s
(2) - Mesured estimatedTime for original in block: 0416.66E15 s
(3) - Mesured estimatedTime for original in block: 0000.0390156852E15 s
(4) - Mesured estimatedTime for original in block: 6642.0E15 s
我知道你可以强行这样:
// Force minimum number of digits to left and right of decimal point
formatter = new DecimalFormat("0.0E0");
s = formatter.format(-1234.567); // -1.2E3
但不知道我怎么能把它强加给Expo-Precision :((( 救命!! :/
答案 0 :(得分:3)
看来你想暗示1e15的精度。
for (double d : new double[]{1.4917951E16, 7.531891E15, 2.9287E13, 3.28478435E17, 6.038E12})
System.out.printf("%11fE15%n", d/1e15);
打印
14.917951E15
7.531891E15
0.029287E15
328.478435E15
0.006038E15
如果范围更宽,则可以使用DecimalFormat
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(300);
df.setGroupingUsed(false);
for(double d = 1 ; d <= 1e30; d *= 1e5) {
System.out.println(df.format(d/1e15)+"E15");
}
打印
0.000000000000001E15
0.0000000001E15
0.00001E15
1E15
100000E15
10000000000E15