入参是int 输出字符串或数值可自己调整
public class MathUtil {
public static String percent(int x, int total) {
if (total == 0) {
return "0";
}
return new BigDecimal(x).multiply(new BigDecimal(100)).divide(new BigDecimal(total), 1, RoundingMode.HALF_UP).stripTrailingZeros().toString();
}
}
注意!!
第一点
由于去掉bigDecimal后面的无用0,使用了 stripTrailingZeros() 方法
此时输出的会是16进制
直接用 toString() 输出的值是不能用的
要用 toPlainString()
第二点
bigDecimal如果保留了四位小数。序列化之后,再反序列化之后就会变成 Double
最终代码如下
public static String percent(int x, int total) {
if (total == 0) {
return "0";
}
return new BigDecimal(x).multiply(new BigDecimal(100)).divide(new BigDecimal(total), 2, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString();
}