请问在JAVA中我用BigDecimal来计算百分比,百分比之和不等于100%

枫雨无晴 2013-10-21 05:16:09
请问在JAVA中我用BigDecimal来计算百分比,但是由于不能整除的原因,进行四舍五入后,有些百分比相加不等于100%,该怎么办?而且一些比较小的的数由于四舍五入直接就给舍弃了。
附代码:
package rdkl.report.util;
import java.math.BigDecimal;
public class MathUtils {
public static double div(int v1,int v2,int scale){
if(scale<0){
throw new IllegalArgumentException("没有指精确位数");
}
BigDecimal b1 = new BigDecimal(Integer.toString(v1));

BigDecimal b2 = new BigDecimal(Integer.toString(v2));

return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();

}

/**
* 计算百分比,精确到小数点两位
* @param v1
* @param v2
* @return
*/
public static double roundRatio(int v1,int v2){
if(v2==0){
return 0.0;
}
double result=div(v1,v2,4);
BigDecimal b1=new BigDecimal(Double.toString(result));
return b1.divide(new BigDecimal(1),2,BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
...全文
5908 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010016988 2013-10-21
  • 打赏
  • 举报
回复
代码有点乱 你可以求出v1 然后double 最后 1 -v1 这样百分比就都出来了 而且等于1 思路问题

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧