【问题标题】:How to print a large number with exponential notation?如何用指数符号打印大数?
【发布时间】:2011-10-26 04:09:34
【问题描述】:

如果我有一个数字 52000000000,并且我想将其打印为 5.2E+9,我该如何使用 printf 呢?

【问题讨论】:

    标签: java decimal notation exponential


    【解决方案1】:

    由于方法简单,我将指导您完成。

    您需要两个计数器:一个用于数字本身(双精度类型,我们称之为“num”),一个用于指数(整数,我们称之为 exp)。您需要一个 while 循环,使得当 num 大于 10 时,将 num 除以 10 并将 exp 增加 1。因此,像 7600 这样的东西应该具有 num = 7.6,exp = 3。

    根据您的返回类型,您可以通过多种方式返回这些值。一种简单的方法是返回类型为字符串并返回 num+"E"+exp.

    【讨论】:

    • 以 10 为底的指数是数字的以 10 为底的对数,向下舍入,log(7600)=3.xx。您不需要循环中的除法。
    • 对...我今天无法思考。如果可能的话,提问者可能应该将您的评论标记为答案。更简单、更高效。
    • 还有一种方法可以使用 printf("%e", number)
    【解决方案2】:

    这可以通过 printf("%.2g", 52000000000); “g”是科学记数法格式的转换字符,“.2”指定精度。

    【讨论】:

      【解决方案3】:

      你需要看看这个:DecimalFormat

      formatter = new DecimalFormat("0.#E0");
      System.out.println(formatter.format(value));//value is where you store the number to be formatted
      

      【讨论】:

      • 似乎没有一种方法可以使用几种不同数量的不同长度自动执行此操作...
      • 这是一种更好的方法,但这看起来确实像家庭作业之类的,这就是我选择上述方法的原因。
      • 我无法让这个工作,但这不会给我两个 sig fig 吗?
      猜你喜欢
      • 1970-01-01
      • 2021-04-27
      • 2022-12-03
      • 2021-05-12
      • 2014-02-05
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多