import java.math.BigDecimal;
public class halfup {
public static void main(String[] args) {
BigDecimal data0 = new BigDecimal(3.05);//err
printFormatData(data0, 1);
BigDecimal data1 = new BigDecimal(3.15);//err
printFormatData(data1, 1);
BigDecimal data2 = new BigDecimal(3.105);//err
printFormatData(data2, 2);
BigDecimal data3 = new BigDecimal(3.115);//right
printFormatData(data3, 2);
BigDecimal data4 = new BigDecimal(3.1105);//right
printFormatData(data4, 3);
BigDecimal data5 = new BigDecimal(3.11705);//err
printFormatData(data5, 4);
}
public static void printFormatData(BigDecimal data, int scale) {
data = data.divide(new BigDecimal(1), scale, BigDecimal.ROUND_HALF_UP);
System.out.println(data.toString());
}
}
结果:
3.0
3.1
3.10
3.12
3.111
3.1170
public class halfup {
public static void main(String[] args) {
BigDecimal data0 = new BigDecimal(3.05);//err
printFormatData(data0, 1);
BigDecimal data1 = new BigDecimal(3.15);//err
printFormatData(data1, 1);
BigDecimal data2 = new BigDecimal(3.105);//err
printFormatData(data2, 2);
BigDecimal data3 = new BigDecimal(3.115);//right
printFormatData(data3, 2);
BigDecimal data4 = new BigDecimal(3.1105);//right
printFormatData(data4, 3);
BigDecimal data5 = new BigDecimal(3.11705);//err
printFormatData(data5, 4);
}
public static void printFormatData(BigDecimal data, int scale) {
data = data.divide(new BigDecimal(1), scale, BigDecimal.ROUND_HALF_UP);
System.out.println(data.toString());
}
}
结果:
3.0
3.1
3.10
3.12
3.111
3.1170
-->BigDecimal data0 = new BigDecimal("3.05");自己想一下为什么不用double计算,而使用BigDecimal的原因如果想不明白,打印一下data0以及data0.scale()
import java.math.BigDecimal;
public class Summary {
public static void main(String[] args) {
BigDecimal data0 = new BigDecimal("3.05");//err
printFormatData(data0, 1);
BigDecimal data1 = new BigDecimal("3.15");//err
printFormatData(data1, 1);
BigDecimal data2 = new BigDecimal("3.105");//err
printFormatData(data2, 2);
BigDecimal data3 = new BigDecimal("3.115");//right
printFormatData(data3, 2);
BigDecimal data4 = new BigDecimal("3.1105");//right
printFormatData(data4, 3);
BigDecimal data5 = new BigDecimal("3.11705");//err
printFormatData(data5, 4);
}
public static void printFormatData(BigDecimal data, int scale) {
data = data.divide(new BigDecimal(1), scale, 4);
System.out.println(data.toString());
}
}
===========================
结果
3.1
3.2
3.11
3.12
3.111
3.1171
全部正确。
shine333(enihs) ( ) 信誉:125 Blog
强啊。
以前只知道 ibm的jdk 只支持 BigDecimal data0 = new BigDecimal("3.05");
而不支持 BigDecimal data0 = new BigDecimal(3.05);
原来这两种写法竟然有这么大的区别。
佩服!!!!!!!!!!!!!!!!