java 两个数相除后四舍五入并保留两位小数有哪些方式?

Python014

java 两个数相除后四舍五入并保留两位小数有哪些方式?,第1张

1  double f = 3.1516

BigDecimal b = new BigDecimal(f)

2   double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()

new java.text.DecimalFormat("#.00").format(3.1415926)

3   double d = 3.1415926

String result = String.format("%.2f", d)

// %.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型。

4   Math.round(5.2644555 * 100) * 0.01d

//String.format("%0" + 15 + "d", 23) 23不足15为就在前面补0

1  方法点拨求近似数时:保留整数,表示精确到个位;保留一位小数,表示精确到十分位;保留两位小数,表示精确到百分位……

2、保留一位小数

如果保留一位小数,就要把第二、三位小数省略。

在表示近似数时,小数末尾的0不能去掉。 

3、保留整数部分:

 ≈1

public static void main(String[] args) {

System.out.println(test(2, 0.7)) //参数为int和double 结果=2.86

System.out.println(test(11111111111113L, 4.5)) // 参数为long和double 结果=2,469,135,802,469.56

System.out.println(test("234567", "3.14159")) // 参数为字符串 结果=74,665.06

}

private static String test(Object a, Object b) { // 参数类型任意(只要是number),返回总是字符串

// 下面这一行里的2,表示保留小数点后多少位(四舍五入),如果两位就是2,如果小数点前三,就改成3.

BigDecimal result = new BigDecimal(String.valueOf(a)).divide(new BigDecimal(String.valueOf(b)), 2, BigDecimal.ROUND_HALF_UP)

return new DecimalFormat("###,###.###").format(Double.valueOf(result.toString())).toString()

}

你说的这个问题涉及到数字精度问题,在程序中,数字运算总是低精度的向高精度的自动转化。比如(int)/(float)就会得到你想要的小数数位,这是由数字在计算机中的运算方式决定的。如果你用3/5.0或者3.0/5,你就可以得到你想要的小数。

在计算机中,整型(int)和浮点(float,double)的表示形式各不相同,占用内存空间也不同,在运算时,为了得到正确的结果,就要进行对位,如果数据类型不一致,就要进行转化。在硬件层面上就是把占用内存少的整型向浮点转换,也就是为这个整型添加额外的字节参与运算,尽管这些字节中都是0,这是数字精度的问题。

现在是两个整形数,运算时,计算机认为不需要进行数据类型的转化,所以就得到你见到的结果。