如何获取小数点后仅两位数字的double值。

例如,如果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, 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;
              }
            }

10-06 11:28