import java.math.BigDecimal; |
import java.math.RoundingMode; |
import java.text.DecimalFormat; |
import java.text.NumberFormat; |
/* |
* Java中保留小数点的方法 |
*/ |
public class GetNum { |
public static void main(String[] args) { |
|
System.out.println(getNum( 0.23656 , "#.0000" , false )); //.2365 不四舍五入,整数部分为0时省略 |
System.out.println(getNum( 0.23656 , "0.0000" , false )); //0.2365不进行四舍五入,整数部分为0时不省略 |
System.out.println(getNum( 0.23656 , "0.0000" , true )); //0.2366 进行四舍五入 |
System.out.println(getNum( 0.236 , "0.0000" , true )); //0.2366 进行四舍五入 不够的小数部分补零 |
// |
// System.out.println(getNum2(0.23456,3));//精确小数点第三位,四舍五入 |
|
//System.out.println(getNum3(0.2345,3,false));//0.234 |
|
// System.out.println(getNum4(0.2345,3,false));//0.234 |
// System.out.println(getNum4(0.2345,3,true));//0.235 |
// System.out.println(getNum4(0.23,3,false));//0.23 没有补零 |
} |
|
|
public static String getNum( double str,String pattern, boolean flag){ |
DecimalFormat format = new DecimalFormat(pattern); //保留小数点三位 |
if (flag) { |
format.setRoundingMode(RoundingMode.UP); //进行四舍五入 |
} else { |
format.setRoundingMode(RoundingMode.DOWN); //不进行四舍五入 |
} |
return format.format(str); |
} |
|
|
public static String getNum2( double str , int decima) { |
long n = 1 ; |
for ( int i = 1 ; i <= decima; i++ ) |
n *= 10 ; |
return String.valueOf(( int )(str * n + 0.5 ) / (n * 1.0 )); |
} |
|
|
public static double getNum3( double str, int point, boolean flag){ |
BigDecimal b = new BigDecimal(str); |
if (flag) { |
return b.setScale(point, BigDecimal.ROUND_HALF_UP).doubleValue(); |
} |
return b.setScale(point, BigDecimal.ROUND_HALF_DOWN).doubleValue(); |
} |
|
|
|
public static String getNum4( double d, int point, boolean flag) { |
NumberFormat nf = NumberFormat.getNumberInstance(); |
nf.setMaximumFractionDigits(point); // 保留小数点位数 |
if (flag){ |
nf.setRoundingMode(RoundingMode.UP); //四舍五入 |
} else { |
nf.setRoundingMode(RoundingMode.DOWN); // 不四舍五入 |
} |
return nf.format(d); |
} |
|
} |