DecimalFormat

it2024-12-29  8

public class PercentUtil { /** * 百分比,保留2位有效数字 - 采用四舍五入方式 * @param numFirst * @param numSecond * @return */ public static String preciseDividion(String numFirst,String numSecond){ BigDecimal dividend = new BigDecimal(numFirst); BigDecimal divisor = new BigDecimal(numSecond); BigDecimal result = dividend.divide(divisor, 4,BigDecimal.ROUND_HALF_UP); //加上%后相当于扩大100倍 return result.movePointRight(2).toString(); } /** * 占比计算保留小数的位数方法 * 转成百分数 * 当前数除以总数 * @param num1 ,num2 num1/num2 * @return rate 保留2位小数的 */ public static String division(int num1,int num2){ String rate="0.00%"; //定义格式化起始位数 String format="0.00"; if(num2 != 0 && num1 != 0){ DecimalFormat dec = new DecimalFormat(format); rate = dec.format((double) num1 / num2*100)+"%"; while(true){ if(rate.equals(format+"%")){ format=format+"0"; DecimalFormat dec1 = new DecimalFormat(format); rate = dec1.format((double) num1 / num2*100)+"%"; }else { break; } } }else if(num1 != 0 && num2 == 0){ rate = "100%"; } return rate; } /** * 把上面得到的百分比转为字符串类型的小数 保留两位小数 * @author shw */ public static BigDecimal perToDecimal(String percent){ String decimal = percent.substring(0,percent.indexOf("%")); BigDecimal bigDecimal = new BigDecimal(decimal); bigDecimal.divide(new BigDecimal("100"), 4, BigDecimal.ROUND_HALF_UP); return bigDecimal; } }
最新回复(0)