为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不使用Java的科学表示法的情况下打印双值?

如何在不使用Java的科学表示法的情况下打印双值?

慕的地8271018 2019-06-11 21:11:40
如何在不使用Java的科学表示法的情况下打印双值?我想用Java打印一个不带指数形式的双值。double dexp = 12345678;System.out.println("dexp: "+dexp);它显示了这个E符号:1.2345678E7.我想把它印成这样:12345678防止这种情况的最好方法是什么?
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

你可以用printf()带着%f:

double dexp = 12345678;System.out.printf("dexp: %f\n", dexp);

这个会打印出来dexp: 12345678.000000..如果不想要小数部分,请使用

System.out.printf("dexp: %.0f\n", dexp);

中解释的格式说明语言。文献资料.

默认toString()您的原始代码中使用的格式将被详细说明。这里.


查看完整回答
反对 回复 2019-06-11
?
慕少森

TA贡献2019条经验 获得超9个赞

简言之:

如果您想要消除尾随零和区域设置问题,那么您应该使用:

double myValue = 0.00000021d;DecimalFormat df = new DecimalFormat("0", DecimalFormatSymbols.getInstance(Locale.ENGLISH));
df.setMaximumFractionDigits(340); // 340 = DecimalFormat.DOUBLE_FRACTION_DIGITSSystem.out.println(df.format(myValue));
 // Output: 0.00000021

说明:

为什么其他答案不适合我:

  • Double.toString()

    System.out.println

    FloatingDecimal.toJavaFormatString

    如果双倍小于10^-3或大于或等于10^7,则使用科学符号。
  • %f,默认的十进制精度为6,否则可以硬编码,但如果小数较少,则会增加额外的零。例子:

    double myValue = 0.00000021d;String.format("%.12f", myvalue); // Output: 0.000000210000
  • setMaximumFractionDigits(0);%.0f删除任何十进制精度,对于整数/长是可以的,但对于Double则不行:

    double myValue = 0.00000021d;System.out.println(String.format("%.0f", myvalue));
     // Output: 0DecimalFormat df = new DecimalFormat("0");System.out.println(df.format(myValue)); // Output: 0
  • 通过使用DecimalFormat,您是本地依赖的。在法语地区,十进制分隔符是逗号,而不是点:

    double myValue = 0.00000021d;DecimalFormat df = new DecimalFormat("0");df.setMaximumFractionDigits(340);
    System.out.println(df.format(myvalue)); // Output: 0,00000021

    使用英语区域设置可以确保您在程序运行的任何地方都能得到小数点分隔符。

为什么要使用340setMaximumFractionDigits?

原因有二:

  • setMaximumFractionDigits

    接受整数,但其实现的最大位数允许为

    DecimalFormat.DOUBLE_FRACTION_DIGITS

    等于340
  • Double.MIN_VALUE = 4.9E-324

    因此,对于340位数字,您肯定不会舍入你的双倍和失去精度。


查看完整回答
反对 回复 2019-06-11
  • 3 回答
  • 0 关注
  • 392 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号