【问题标题】:How to round a decimal output to two places? [duplicate]如何将小数输出四舍五入到两位? [复制]
【发布时间】:2014-01-05 13:33:51
【问题描述】:

在这个程序中,我将 double 类型的计算值打印到屏幕上。但目前计算结果是小数点后 14 位。我的问题是,Java 中是否有封装输出语句的工具可以指定小数位数吗?例如round(mark1,2)

目前的打印方式是这样的:

 double markOne = intent.getDoubleExtra("number1", 0);
 result1.setText(String.valueOf(markOne)+"mm");

是否可以将 setText 包装在 Java 方法中,或者我是否必须创建自定义格式?有人可以用我的代码给我一个例子吗?谢谢

【问题讨论】:

    标签: java android formatting decimal


    【解决方案1】:

    我认为最好使用 BigDecimal 类型而不是 Double。 你可以这样做

    BigDecimal myValue= new BigDecimal(12.3577);
      myValue= myValue.setScale(2, BigDecimal.ROUND_HALF_UP);
    

    而 myValue 将是 12.36

    我希望这会有所帮助

    【讨论】:

    • +1 用于使用舍入模式和 BigDecimal 进行正确舍入
    • @Pracede 如何将它应用到我的代码中,我有点困惑?
    【解决方案2】:

    试试这个:

      int decimalPlaces = 2;
        markOne = double(int(markOne*Math.pow(10, decimalPlaces)))/Math.pow(10, decimalPlaces);
    

    【讨论】:

    • 现在你只是在炫耀。
    【解决方案3】:

    你可以使用十进制格式器

    DecimalFormat df = new DecimalFormat("#.##");
    System.out.print(df.format(d));
    

    【讨论】:

    • 谢谢,我现在就这样测试:DecimalFormat df = new DecimalFormat("#.##"); result1.setText(String.valueOf(df.format(markOne)+"mm"));
    • 这很有魅力,我之前收到了很多关于复杂自定义方法的建议,而我所要做的就是使用DecimalFormat
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 2019-08-26
    相关资源
    最近更新 更多