将非常小的双精度值转换为字符串(使用科学计数法)(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 将双精度值转换为科学计数法?