加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Android:如何在十进制值之后得到两位数?不想截断该值

发布时间:2020-12-15 05:23:24 所属栏目:Java 来源:网络整理
导读:如何得到小数点后只有两位数的双精度值. 例如,如果a = 190253.80846153846 那么结果值应该是a = 190253.80 尝试: 我试过这个: public static DecimalFormat twoDForm = new DecimalFormat("#0.00"); 在代码中 a = Double.parseDouble(twoDForm.format(((a)
如何得到小数点后只有两位数的双精度值.

例如,如果a = 190253.80846153846
那么结果值应该是a = 190253.80

尝试:
我试过这个:

public static DecimalFormat twoDForm = new DecimalFormat("#0.00");

在代码中

a = Double.parseDouble(twoDForm.format(((a))));

但我得到的价值像190253.81,而不是我想190253.80

那么我应该为它改变什么?

解决方法

因为Math.round()返回与参数最接近的int.通过添加1/2将结果舍入为整数,取结果的最低值,并将结果转换为int类型.
使用Math.floor()

public static double roundMyData(double Rval,int numberOfDigitsAfterDecimal) {
                  double p = (float)Math.pow(10,numberOfDigitsAfterDecimal);
              Rval = Rval * p;
              double tmp = Math.floor(Rval);
              System.out.println("~~~~~~tmp~~~~~"+tmp);
              return (double)tmp/p;
              }

完整的源代码

class ZiggyTest2{


        public static void main(String[] args) {  
             double num = 190253.80846153846;
              double round = roundMyData(num,2);
              System.out.println("Rounded data: " + round);
              }

              public static double roundMyData(double Rval,numberOfDigitsAfterDecimal);
              Rval = Rval * p;
              double tmp = Math.floor(Rval);
              System.out.println("~~~~~~tmp~~~~~"+tmp);
              return (double)tmp/p;
              }
            }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读