【问题标题】:rounding a float to 7 significant digits in java [duplicate]在java中将浮点数舍入到7位有效数字[重复]
【发布时间】:2015-03-04 11:12:58
【问题描述】:

我得到一个浮点数作为我想将其四舍五入为 7 位有效数字的方法的输出。例如:

如果 1.234 输出应该是 1.234000

如果 7.1232478 输出应该是 7.123248

我试过了

sum=sum*1000000/1000000;

System.out.println(Float.toString(sum).substring(0,8));

有没有更好的方法来做到这一点?

【问题讨论】:

标签: java


【解决方案1】:

如果要显示结果,请使用System.out.printf(".7f");String.format(".7f")

System.out.printf("%.7f\n", 1.123456789123456789);

1.1234568

你要计算什么吗,看BigDecimal

//For example, divide by 1 and give a prevision of 7 digits
BigDecimal divide = bigDecimal.divide(BigDecimal.ONE, 7, RoundingMode.HALF_EVEN);
System.out.println(divide);

1.1234568

【讨论】:

  • @amit 为了避免精度问题,OP 应该只使用 BigDecimal。 :new BigDecimal("2.9");
【解决方案2】:

printf 有这个功能

System.out.printf ("%.7f", floatNumber);

【讨论】:

    【解决方案3】:

    使用 DecimalFormat 格式化数字。

    DecimalFormat df = new DecimalFormat("####0.000000");
    String result = df.format(1.234);
    System.out.println(result);
    

    1.234000

    快速参考链接

    http://tutorials.jenkov.com/java-internationalization/decimalformat.html

    http://examples.javacodegeeks.com/core-java/text/decimalformat/java-decimal-format-example/

    【讨论】:

      【解决方案4】:

      String 类中有一个格式化方法。你可以使用它。

      String number=String.format("%.7f", 1.234567777);
      

      数字变量将获得所需的结果,即 (1.2345678)

      【讨论】:

        【解决方案5】:

        第1步,创建DecimalFormat(例如小数点后7位的数字,如果小于7则用零替换)

        DecimalFormat df = new DecimalFormat("0.#######");
        

        第二步,设置取整模式(选择的模式只是一个例子,选择最适合自己的)

        df.setRoundingMode(RoundingMode.HALF_UP);
        

        第三步,格式化数字

        String myNumber = df.format(1.234);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多