请问在JAVA中我用BigDecimal来计算百分比,但是由于不能整除的原因,有些百分比相加不等于100%,该怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问在JAVA中我用BigDecimal来计算百分比,但是由于不能整除的原因,有些百分比相加不等于100%,该怎么办相关的知识,希望对你有一定的参考价值。

参考技术A = =服了。服了。

你可知道,有写百分比是无限循环小数的。被省去了一部分。你觉得你再次相加的时候,那省去的部分会回来么?

那最后的结果当然就小于100%了。
那你就做个人性处理吧。

要看你小数点以后面的几位了。如果是0.000%的话。
那你就处理成,最后相加等于99.990%时候 大于这个数 就是100%呗。就是这样的思路,具体的 ,我也不知道怎么去弄了!看 你自己去调试咯!本回答被提问者采纳
参考技术B 你自己不知道把程序精简一下贴出来,而且又没分,谁帮你答?

给你写一个自己看看
import java.math.BigDecimal;

public class BIgDecimal

public static void main(String[] args)

double a = 2.0;
double b = 5.0;
double c = divide(a, b, 2);
System.out.println(addZero(c) + "%");

double d = divide(a, 1, 2);
System.out.println(addZero(d) + "%");



public static double divide(double v1, double v2, int scale)
double c = div(v1, v2, scale + 2);
// System.out.println(c+"%");
return div(c * 100.0, 1, scale);

java.math.BigDecimal类multiply的使用

其实java的float只能用来进行科学计算或工程计算,在大多数的商业计算中,一般采用java.math.BigDecimal类来进行精确计算。
在使用BigDecimal类来进行计算的时候,主要分为以下步骤:
1、用float或者double变量构建BigDecimal对象。
2、通过调用BigDecimal的加,减,乘,除等相应的方法进行算术运算。
3、把BigDecimal对象转换成float,double,int等类型。
一般来说,可以使用BigDecimal的构造方法或者静态方法的valueOf()方法把基本类型的变量构建成BigDecimal对象。

BigDecimal b1 = new BigDecimal(Double.toString(0.48));
BigDecimal b2 = BigDecimal.valueOf(0.48);


public BigDecimal add(BigDecimal value);//加法
public BigDecimal subtract(BigDecimal value); //减法 
public BigDecimal multiply(BigDecimal value); //乘法
public BigDecimal divide(BigDecimal value); //除法

通过这些方法进行结果的计算,最后进行精度确定

new BigDecimal("1225.125").setScale(2, RoundingMode.HALF_UP)
new BigDecimal("1225.121").setScale(2,BigDecimal.ROUND_HALF_UP)

.setScale后面一定要带上进度算法,要不然会因为精度丢失问题,出现内部错误

以上是关于请问在JAVA中我用BigDecimal来计算百分比,但是由于不能整除的原因,有些百分比相加不等于100%,该怎么办的主要内容,如果未能解决你的问题,请参考以下文章

java统计图表百分比和如何等于百分之百

java统计图表百分比和如何等于百分之百

java.math.BigDecimal类multiply的使用

请问,java里,如何把BigDecimal类型转成Integer

格式化,大十进制,请按百分比计算

请问在QT4中我用QTableView 和QSqlTableModel操作数据库,我想改变tableview某行的背景色应该怎么做?