Java - 以科学计数法格式化数字

Posted

技术标签:

【中文标题】Java - 以科学计数法格式化数字【英文标题】:Java - Format numbers in scientific notation 【发布时间】:2014-09-05 18:57:26 【问题描述】:

我想格式化这个String:

String number = "3.4213946120686956E-9";

到这里:

String number = "3.42E-9";

四舍五入到小数点后两位。我怎样才能实现它?

【问题讨论】:

***.com/questions/2944822/…的可能重复 谢谢,有帮助。 【参考方案1】:

试试new DecimalFormat("0.##E0")。 Javadoc:DecimalFormat

例子:

public class Test 

  private static java.text.DecimalFormat sf = new java.text.DecimalFormat("0.##E0");

  public static void main(String[] args) 
    System.out.println(sf.format(Double.parseDouble("3.4213946120686956E-9")));
  
;

输出:3.42E-9

【讨论】:

【参考方案2】:

这不是最优雅的解决方案,但您可以:

EX:字符串编号 = "3.4213946120686956E-9";

如果字符串中有句点和 E

按句点分割字符串,得到句点后的前2个字符=42

获取末尾的最后 3 个字符 = E-9

然后将它与句点之前的所有字符一起添加回来 = 3 + "." + 42 + E-9

【讨论】:

很好,但该方法没有四舍五入:)【参考方案3】:

了解DecimalFormat。

    String number = "3.4213946120686956E-9";
    DecimalFormat format = new DecimalFormat("#.##E0");
    System.out.println(format.format(new BigDecimal(number)));

【讨论】:

以上是关于Java - 以科学计数法格式化数字的主要内容,如果未能解决你的问题,请参考以下文章

Java中的紧凑数字格式化行为(在十进制和科学记数法之间自动切换)

Jasper Report 以 CSV 格式导出带有科学计数法的数字

java BigDecimal用法详解(保留小数,四舍五入,数字格式化,科学计数法转数字等)

excel 怎么让数字不用科学计数法

BigDecimal的用法详解(保留两位小数,四舍五入,数字格式化,科学计数法转数字,数字里的逗号处理)

BigDecimal的用法详解(保留两位小数,四舍五入,数字格式化,科学计数法转数字,数字里的逗号处理)