/**
* 四舍五入的几种方式
* 1.BigDecimal.ROUND_HALF_UP
* 2.Math.round
* 3.String.format
*/
//BigDecimal的四舍五入.1代表保留1位小数,2代表保留2位小数,等等
class BigDecimalTest{
public static void main(String[] args) {
ROUND_UP();//舍弃位非0即进位(负数按绝对值看)
ROUND_DOWN();//所有的位都要舍弃,不存在进位情况(负数按绝对值看)
ROUND_CEILING();//正数舍弃位非0即进位;负数所有的位都要舍弃,不存在进位情况
ROUND_FLOOR();//正数所有的位都要舍弃,不存在进位情况;负数舍弃位非0即进位(按绝对值看)
ROUND_HALF_UP();//舍弃位小于5,舍; 舍弃位大于5,进位后舍; 等于5,向偶数位靠近,若5后面还有非0数字,则按大于5来看(负数按绝对值看)
ROUND_HALF_DOWN();//舍弃位小于5,舍; 舍弃位大于5,进位后舍; 等于5,向偶数位靠近,若5后面还有非0数字,则按大于5来看(负数按绝对值看)
ROUND_HALF_EVEN();//舍弃位小于5,舍; 舍弃位大于5,进位后舍;等于5,向偶数位靠近,若5后面还有非0数字,则按大于5来看(负数按绝对值看)
}
public static void ROUND_UP(){
System.out.println("(ROUND_UP)11.5450:"+new BigDecimal(11.5450).setScale(2, BigDecimal.ROUND_UP));
System.out.println("(ROUND_UP)11.5351:"+new BigDecimal(11.5351).setScale(2, BigDecimal.ROUND_UP));
System.out.println("(ROUND_UP)11.544:"+new BigDecimal(11.544).setScale(2, BigDecimal.ROUND_UP));
System.out.println("(ROUND_UP)11.546:"+new BigDecimal(11.546).setScale(2, BigDecimal.ROUND_UP));
System.out.println("(ROUND_UP)11.535:"+new BigDecimal(11.535).setScale(2, BigDecimal.ROUND_UP));
System.out.println("(ROUND_UP)-11.5450:"+new BigDecimal(-11.5450).setScale(2, BigDecimal.ROUND_UP));
System.out.println("(ROUND_UP)-11.5351:"+new BigDecimal(-11.5351).setScale(2, BigDecimal.ROUND_UP));
System.out.println("(ROUND_UP)-11.544:"+new BigDecimal(-11.544).setScale(2, BigDecimal.ROUND_UP));
System.out.println("(ROUND_UP)-11.546:"+new BigDecimal(-11.546).setScale(2, BigDecimal.ROUND_UP));
System.out.println("(ROUND_UP)-11.535:"+new BigDecimal(-11.535).setScale(2, BigDecimal.ROUND_UP));
// (ROUND_UP)11.5450:11.55
// (ROUND_UP)11.5351:11.54
// (ROUND_UP)11.544:11.55
// (ROUND_UP)11.546:11.55
// (ROUND_UP)11.535:11.54
// (ROUND_UP)-11.5450:-11.55
// (ROUND_UP)-11.5351:-11.54
// (ROUND_UP)-11.544:-11.55
// (ROUND_UP)-11.546:-11.55
// (ROUND_UP)-11.535:-11.54
}
public static void ROUND_DOWN(){
System.out.println("(ROUND_DOWN)11.5450:"+new BigDecimal(11.5450).setScale(2, BigDecimal.ROUND_DOWN));
System.out.println("(ROUND_DOWN)11.5351:"+new BigDecimal(11.5351).setScale(2, BigDecimal.ROUND_DOWN));
System.out.println("(ROUND_DOWN)11.544:"+new BigDecimal(11.544).setScale(2, BigDecimal.ROUND_DOWN));
System.out.println("(ROUND_DOWN)11.546:"+new BigDecimal(11.546).setScale(2, BigDecimal.ROUND_DOWN));
System.out.println("(ROUND_DOWN)11.535:"+new BigDecimal(11.535).setScale(2, BigDecimal.ROUND_DOWN));
System.out.println("(ROUND_DOWN)-11.5450:"+new BigDecimal(-11.5450).setScale(2, BigDecimal.ROUND_DOWN));
System.out.println("(ROUND_DOWN)-11.5351:"+new BigDecimal(-11.5351).setScale(2, BigDecimal.ROUND_DOWN));
System.out.println("(ROUND_DOWN)-11.544:"+new BigDecimal(-11.544).setScale(2, BigDecimal.ROUND_DOWN));
System.out.println("(ROUND_DOWN)-11.546:"+new BigDecimal(-11.546).setScale(2, BigDecimal.ROUND_DOWN));
System.out.println("(ROUND_DOWN)-11.535:"+new BigDecimal(-11.535).setScale(2, BigDecimal.ROUND_DOWN));
// (ROUND_DOWN)11.5450:11.54
// (ROUND_DOWN)11.5351:11.53
// (ROUND_DOWN)11.544:11.54
// (ROUND_DOWN)11.546:11.54
// (ROUND_DOWN)11.535:11.53
// (ROUND_DOWN)-11.5450:-11.54
// (ROUND_DOWN)-11.5351:-11.53
// (ROUND_DOWN)-11.544:-11.54
// (ROUND_DOWN)-11.546:-11.54
// (ROUND_DOWN)-11.535:-11.53
}
public static void ROUND_CEILING(){
System.out.println("(ROUND_CEILING)11.5450:"+new BigDecimal(11.5450).setScale(2, BigDecimal.ROUND_CEILING));
System.out.println("(ROUND_CEILING)11.5351:"+new BigDecimal(11.5351).setScale(2, BigDecimal.ROUND_CEILING));
System.out.println("(ROUND_CEILING)11.544:"+new BigDecimal(11.544).setScale(2, BigDecimal.ROUND_CEILING));
System.out.println("(ROUND_CEILING)11.546:"+new BigDecimal(11.546).setScale(2, BigDecimal.ROUND_CEILING));
System.out.println("(ROUND_CEILING)11.535:"+new BigDecimal(11.535).setScale(2, BigDecimal.ROUND_CEILING));
System.out.println("(ROUND_CEILING)-11.5450:"+new BigDecimal(-11.5450).setScale(2, BigDecimal.ROUND_CEILING));
System.out.println("(ROUND_CEILING)-11.5351:"+new BigDecimal(-11.5351).setScale(2, BigDecimal.ROUND_CEILING));
System.out.println("(ROUND_CEILING)-11.544:"+new BigDecimal(-11.544).setScale(2, BigDecimal.ROUND_CEILING));
System.out.println("(ROUND_CEILING)-11.546:"+new BigDecimal(-11.546).setScale(2, BigDecimal.ROUND_CEILING));
System.out.println("(ROUND_CEILING)-11.535:"+new BigDecimal(-11.535).setScale(2, BigDecimal.ROUND_CEILING));
//(ROUND_CEILING)11.5450:11.55
//(ROUND_CEILING)11.5351:11.54
//(ROUND_CEILING)11.544:11.55
//(ROUND_CEILING)11.546:11.55
//(ROUND_CEILING)11.535:11.54
//(ROUND_CEILING)-11.5450:-11.54
//(ROUND_CEILING)-11.5351:-11.53
//(ROUND_CEILING)-11.544:-11.54
//(ROUND_CEILING)-11.546:-11.54
//(ROUND_CEILING)-11.535:-11.53
}
public static void ROUND_FLOOR(){
System.out.println("(ROUND_FLOOR)11.5450:"+new BigDecimal(11.5450).setScale(2, BigDecimal.ROUND_FLOOR));
System.out.println("(ROUND_FLOOR)11.5351:"+new BigDecimal(11.5351).setScale(2, BigDecimal.ROUND_FLOOR));
System.out.println("(ROUND_FLOOR)11.544:"+new BigDecimal(11.544).setScale(2, BigDecimal.ROUND_FLOOR));
System.out.println("(ROUND_FLOOR)11.546:"+new BigDecimal(11.546).setScale(2, BigDecimal.ROUND_FLOOR));
System.out.println("(ROUND_FLOOR)11.535:"+new BigDecimal(11.535).setScale(2, BigDecimal.ROUND_FLOOR));
System.out.println("(ROUND_FLOOR)-11.5450:"+new BigDecimal(-11.5450).setScale(2, BigDecimal.ROUND_FLOOR));
System.out.println("(ROUND_FLOOR)-11.5351:"+new BigDecimal(-11.5351).setScale(2, BigDecimal.ROUND_FLOOR));
System.out.println("(ROUND_FLOOR)-11.544:"+new BigDecimal(-11.544).setScale(2, BigDecimal.ROUND_FLOOR));
System.out.println("(ROUND_FLOOR)-11.546:"+new BigDecimal(-11.546).setScale(2, BigDecimal.ROUND_FLOOR));
System.out.println("(ROUND_FLOOR)-11.535:"+new BigDecimal(-11.535).setScale(2, BigDecimal.ROUND_FLOOR));
//(ROUND_FLOOR)11.5450:11.54
//(ROUND_FLOOR)11.5351:11.53
//(ROUND_FLOOR)11.544:11.54
//(ROUND_FLOOR)11.546:11.54
//(ROUND_FLOOR)11.535:11.53
//(ROUND_FLOOR)-11.5450:-11.55
//(ROUND_FLOOR)-11.5351:-11.54
//(ROUND_FLOOR)-11.544:-11.55
//(ROUND_FLOOR)-11.546:-11.55
//(ROUND_FLOOR)-11.535:-11.54
}
public static void ROUND_HALF_UP(){
System.out.println("(ROUND_HALF_UP)11.5450:"+new BigDecimal(11.5450).setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println("(ROUND_HALF_UP)11.5351:"+new BigDecimal(11.5351).setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println("(ROUND_HALF_UP)11.544:"+new BigDecimal(11.544).setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println("(ROUND_HALF_UP)11.546:"+new BigDecimal(11.546).setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println("(ROUND_HALF_UP)11.535:"+new BigDecimal(11.535).setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println("(ROUND_HALF_UP)-11.5450:"+new BigDecimal(-11.5450).setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println("(ROUND_HALF_UP)-11.5351:"+new BigDecimal(-11.5351).setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println("(ROUND_HALF_UP)-11.544:"+new BigDecimal(-11.544).setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println("(ROUND_HALF_UP)-11.546:"+new BigDecimal(-11.546).setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println("(ROUND_HALF_UP)-11.535:"+new BigDecimal(-11.535).setScale(2, BigDecimal.ROUND_HALF_UP));
//(ROUND_HALF_UP)11.5450:11.54
//(ROUND_HALF_UP)11.5351:11.54
//(ROUND_HALF_UP)11.544:11.54
//(ROUND_HALF_UP)11.546:11.55
//(ROUND_HALF_UP)11.535:11.54
//(ROUND_HALF_UP)-11.5450:-11.54
//(ROUND_HALF_UP)-11.5351:-11.54
//(ROUND_HALF_UP)-11.544:-11.54
//(ROUND_HALF_UP)-11.546:-11.55
//(ROUND_HALF_UP)-11.535:-11.54
}
public static void ROUND_HALF_DOWN(){
System.out.println("(ROUND_HALF_DOWN)11.5450:"+new BigDecimal(11.5450).setScale(2, BigDecimal.ROUND_HALF_DOWN));
System.out.println("(ROUND_HALF_DOWN)11.5451:"+new BigDecimal(11.5451).setScale(2, BigDecimal.ROUND_HALF_DOWN));
System.out.println("(ROUND_HALF_DOWN)11.5351:"+new BigDecimal(11.5351).setScale(2, BigDecimal.ROUND_HALF_DOWN));
System.out.println("(ROUND_HALF_DOWN)11.544:"+new BigDecimal(11.544).setScale(2, BigDecimal.ROUND_HALF_DOWN));
System.out.println("(ROUND_HALF_DOWN)11.546:"+new BigDecimal(11.546).setScale(2, BigDecimal.ROUND_HALF_DOWN));
System.out.println("(ROUND_HALF_DOWN)11.535:"+new BigDecimal(11.535).setScale(2, BigDecimal.ROUND_HALF_DOWN));
System.out.println("(ROUND_HALF_DOWN)11.536:"+new BigDecimal(11.535).setScale(2, BigDecimal.ROUND_HALF_DOWN));
System.out.println("(ROUND_HALF_DOWN)-11.5450:"+new BigDecimal(-11.5450).setScale(2, BigDecimal.ROUND_HALF_DOWN));
System.out.println("(ROUND_HALF_DOWN)-11.5451:"+new BigDecimal(-11.5451).setScale(2, BigDecimal.ROUND_HALF_DOWN));
System.out.println("(ROUND_HALF_DOWN)-11.5351:"+new BigDecimal(-11.5351).setScale(2, BigDecimal.ROUND_HALF_DOWN));
System.out.println("(ROUND_HALF_DOWN)-11.544:"+new BigDecimal(-11.544).setScale(2, BigDecimal.ROUND_HALF_DOWN));
System.out.println("(ROUND_HALF_DOWN)-11.546:"+new BigDecimal(-11.546).setScale(2, BigDecimal.ROUND_HALF_DOWN));
System.out.println("(ROUND_HALF_DOWN)-11.535:"+new BigDecimal(-11.535).setScale(2, BigDecimal.ROUND_HALF_DOWN));
System.out.println("(ROUND_HALF_DOWN)-11.536:"+new BigDecimal(-11.535).setScale(2, BigDecimal.ROUND_HALF_DOWN));
//(ROUND_HALF_DOWN)11.5450:11.54
//(ROUND_HALF_DOWN)11.5451:11.55
//(ROUND_HALF_DOWN)11.5351:11.54
//(ROUND_HALF_DOWN)11.544:11.54
//(ROUND_HALF_DOWN)11.546:11.55
//(ROUND_HALF_DOWN)11.535:11.54
//(ROUND_HALF_DOWN)11.536:11.54
//(ROUND_HALF_DOWN)-11.5450:-11.54
//(ROUND_HALF_DOWN)-11.5451:-11.55
//(ROUND_HALF_DOWN)-11.5351:-11.54
//(ROUND_HALF_DOWN)-11.544:-11.54
//(ROUND_HALF_DOWN)-11.546:-11.55
//(ROUND_HALF_DOWN)-11.535:-11.54
//(ROUND_HALF_DOWN)-11.536:-11.54
}
public static void ROUND_HALF_EVEN(){
System.out.println("(ROUND_HALF_EVEN)11.5450:"+new BigDecimal(11.5450).setScale(2, BigDecimal.ROUND_HALF_EVEN));
System.out.println("(ROUND_HALF_EVEN)11.5451:"+new BigDecimal(11.5451).setScale(2, BigDecimal.ROUND_HALF_EVEN));
System.out.println("(ROUND_HALF_EVEN)11.5351:"+new BigDecimal(11.5351).setScale(2, BigDecimal.ROUND_HALF_EVEN));
System.out.println("(ROUND_HALF_EVEN)11.544:"+new BigDecimal(11.544).setScale(2, BigDecimal.ROUND_HALF_EVEN));
System.out.println("(ROUND_HALF_EVEN)11.546:"+new BigDecimal(11.546).setScale(2, BigDecimal.ROUND_HALF_EVEN));
System.out.println("(ROUND_HALF_EVEN)11.535:"+new BigDecimal(11.535).setScale(2, BigDecimal.ROUND_HALF_EVEN));
System.out.println("(ROUND_HALF_EVEN)-11.5450:"+new BigDecimal(-11.5450).setScale(2, BigDecimal.ROUND_HALF_EVEN));
System.out.println("(ROUND_HALF_EVEN)-11.5451:"+new BigDecimal(-11.5451).setScale(2, BigDecimal.ROUND_HALF_EVEN));
System.out.println("(ROUND_HALF_EVEN)-11.5351:"+new BigDecimal(-11.5351).setScale(2, BigDecimal.ROUND_HALF_EVEN));
System.out.println("(ROUND_HALF_EVEN)-11.544:"+new BigDecimal(-11.544).setScale(2, BigDecimal.ROUND_HALF_EVEN));
System.out.println("(ROUND_HALF_EVEN)-11.546:"+new BigDecimal(-11.546).setScale(2, BigDecimal.ROUND_HALF_EVEN));
System.out.println("(ROUND_HALF_EVEN)-11.535:"+new BigDecimal(-11.535).setScale(2, BigDecimal.ROUND_HALF_EVEN));
//(ROUND_HALF_EVEN)11.5450:11.54
//(ROUND_HALF_EVEN)11.5451:11.55
//(ROUND_HALF_EVEN)11.5351:11.54
//(ROUND_HALF_EVEN)11.544:11.54
//(ROUND_HALF_EVEN)11.546:11.55
//(ROUND_HALF_EVEN)11.535:11.54
//(ROUND_HALF_EVEN)-11.5450:-11.54
//(ROUND_HALF_EVEN)-11.5451:-11.55
//(ROUND_HALF_EVEN)-11.5351:-11.54
//(ROUND_HALF_EVEN)-11.544:-11.54
//(ROUND_HALF_EVEN)-11.546:-11.55
//(ROUND_HALF_EVEN)-11.535:-11.54
}
}
//Math.round的四舍五入为取整,
// 正数为正常的四舍五入,
// 负数为取绝对值后进行五舍六入(如果记不住,则可以将负数加一个数字变为正数,然后进行四舍五入后再减去那个数字)
//举例:-1.5,取一个数字2相加之后等于0.5,四舍五入后等于1,再减去2,结果等于-1
class MathRound{
public static void main(String[] args) {
System.out.println("Math.round(1.5):"+Math.round(1.5));
System.out.println("Math.round(1.4):"+Math.round(1.4));
System.out.println("Math.round(-1.5):"+Math.round(-1.5));
System.out.println("Math.round(-1.6):"+Math.round(-1.6));
System.out.println("Math.round(-1.4):"+Math.round(-1.4));
System.out.println("Math.round(-1.45):"+Math.round(-1.45));
System.out.println("Math.round(-1.46):"+Math.round(-1.46));
System.out.println("Math.round(-0.9):"+Math.round(-0.9));
//Math.round(1.5):2
//Math.round(1.4):1
//Math.round(-1.5):-1
//Math.round(-1.6):-2
//Math.round(-1.4):-1
//Math.round(-1.45):-1
//Math.round(-1.46):-1
//Math.round(-0.9):-1
}
}
String.format四舍五入,保留几位小数就填几,正数为正常的四舍五入,负数为取绝对值后进行四舍五入
class StringFormat{
public static void main(String[] args) {
System.out.println("11.545**:"+Double.parseDouble(String.format("%.2f", 11.545)));
System.out.println("11.546**:"+Double.parseDouble(String.format("%.2f", 11.546)));
System.out.println("11.535**:"+Double.parseDouble(String.format("%.2f", 11.535)));
System.out.println("11.536**:"+Double.parseDouble(String.format("%.2f", 11.536)));
System.out.println("11.5451**:"+Double.parseDouble(String.format("%.2f", 11.5451)));
System.out.println("11.5351**:"+Double.parseDouble(String.format("%.2f", 11.5351)));
System.out.println("11.534**:"+Double.parseDouble(String.format("%.2f", 11.534)));
System.out.println("-11.545**:"+Double.parseDouble(String.format("%.2f", -11.545)));
System.out.println("-11.546**:"+Double.parseDouble(String.format("%.2f", -11.546)));
System.out.println("-11.535**:"+Double.parseDouble(String.format("%.2f", -11.535)));
System.out.println("-11.536**:"+Double.parseDouble(String.format("%.2f", -11.536)));
System.out.println("-11.5451**:"+Double.parseDouble(String.format("%.2f", -11.5451)));
System.out.println("-11.5351**:"+Double.parseDouble(String.format("%.2f", -11.5351)));
System.out.println("-11.534**:"+Double.parseDouble(String.format("%.2f", -11.534)));
//11.545**:11.55
//11.546**:11.55
//11.535**:11.54
//11.536**:11.54
//11.5451**:11.55
//11.5351**:11.54
//11.534**:11.53
//-11.545**:-11.55
//-11.546**:-11.55
//-11.535**:-11.54
//-11.536**:-11.54
//-11.5451**:-11.55
//-11.5351**:-11.54
//-11.534**:-11.53
}
}