将非常小的双精度值转换为字符串(使用科学计数法)(Java)

Posted

技术标签:

【中文标题】将非常小的双精度值转换为字符串(使用科学计数法)(Java)【英文标题】:Convert very small double values to string (with scientific notation) (Java) 【发布时间】:2010-12-12 12:58:44 【问题描述】:

我正在尝试打印一个小的 double 数字,例如 6.67e-11,但使用 Double.toString() 会返回 0。我该怎么做才能让它打印 6.67e-11(或类似的东西)?

【问题讨论】:

请看DecimalFormat 【参考方案1】:

无法重现:

public class Test 

    public static void main(String args[])
    
        double d = 6.67e-11;

        System.out.println(Double.toString(d)); // Prints "6.67E-11"
    

IIRC,Double.toString() 始终返回一个字符串,该字符串允许使用 Double.parseDouble() 来回传递确切的值。

我的猜测是,由于其他操作中的一些舍入错误,您实际上没有一个小的值 - 您有 0。

【讨论】:

+1 - javadoc 证实了您的回忆:“m 或 a 的小数部分必须打印多少位?必须至少有一个数字来表示小数部分,并且超出此数量,但仅与唯一区分参数值与 double 类型的相邻值所需的数量一样多。” 该死的,你是对的。 Double.toString() 按我的意愿工作,错误在代码的另一部分。我想我应该在询问之前进行更多测试......

以上是关于将非常小的双精度值转换为字符串(使用科学计数法)(Java)的主要内容,如果未能解决你的问题,请参考以下文章

通过计算零以科学计数法显示非常大或非常小的数字

如何防止 PHP SoapClient 将双精度值转换为科学计数法?

SQL Server:将FLOAT转换为NVARCHAR,最高精度,无需科学记数法

在c ++中从双精度转换为字符串[重复]

C++,如何从字符串中获取正确的双精度值?

在 Java 中使用 xstream 转换为 xml 时如何避免大双精度数的科学记数法