java除法保留n位有效位
动态的除法计算和小数点后面的位数保留
/**
* 计算两个数的百分比 形式为 23.22%
*
* @param numerator
* 分子
* @param denominator
* 分母
* @param digit
* 小数保留位数
* @return
*/
public static String compilePer(int numerator, int denominator, int digit) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < digit; i++) {
sb.append("#");
}
DecimalFormat df = new DecimalFormat("#.##" + sb.toString());
String formatValue = df.format(((double) numerator / denominator));
double doubleValue = Double.parseDouble(formatValue) * 100;
StringBuffer sb2 = new StringBuffer();
for (int i = 0; i < digit; i++) {
if (i == 0) {
sb2.append(".#");
} else {
sb2.append("#");
}
}
DecimalFormat df2 = new DecimalFormat("#" + sb2.toString());
return df2.format(doubleValue);
}
虽然用到的情况不是很多,但是还是挺便捷的
这里我们主要用到DecimalFormat类,顾名思义就是处理小数点格式的类
DecimalFormat简单用法
- #号 表示保留可以保留的位数
比如小数本来的位数比你要保留的位数多的情况
new DecimalFormat("#.##").format(2.133) //out> 2.13
小数本来的位数比你要保留的位数少的情况
new DecimalFormat("#.##").format(2.1) //out> 2.1
可以看出#号的保留方式不是绝对的
- 0 表示保留有效位数,不足用0顶
new DecimalFormat("00.000").format(2.1) //out> 02.100
- % 表示以百分比形式(自动乘100加百分号字符)
new DecimalFormat("#0.00%").format(0.021) //out> 2.10%