首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指数精度[打印双精度,小数]

指数精度[打印双精度,小数]
EN

Stack Overflow用户
提问于 2012-08-30 22:59:22
回答 1查看 788关注 0票数 0

有没有一种打印精度达到指数级的方法?我需要用微小的数字填充一些数据,然后将它们进行比较……

我有这样的想法:

代码语言:javascript
复制
(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

我想这样打印:

代码语言:javascript
复制
(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

我知道你可以像这样强迫它:

代码语言:javascript
复制
// 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:( help!!:/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-30 23:03:49

看起来你想暗示1e15的精度。

代码语言:javascript
复制
for (double d : new double[]{1.4917951E16, 7.531891E15, 2.9287E13, 3.28478435E17, 6.038E12})
    System.out.printf("%11fE15%n", d/1e15);

打印

代码语言:javascript
复制
  14.917951E15
   7.531891E15
   0.029287E15
 328.478435E15
   0.006038E15

如果范围大得多,可以使用DecimalFormat

代码语言:javascript
复制
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");
}

打印

代码语言:javascript
复制
0.000000000000001E15
0.0000000001E15
0.00001E15
1E15
100000E15
10000000000E15
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12199815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档