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

发布于 2024-10-07 02:21:01 字数 133 浏览 7 评论 0原文

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

I'm trying to print a small double number like 6.67e-11, but using Double.toString() returns 0. What can I do to make it print 6.67e-11 (or something similar) instead?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花开柳相依 2024-10-14 02:21:01

无法重现:

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。

Unable to reproduce:

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() always returns a string which allows the exact value to be round-tripped using Double.parseDouble().

My guess is that you don't actually have a small value - that you have 0, due to some rounding errors in other operations.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文