请问在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.math.BigDecimal类multiply的使用
请问,java里,如何把BigDecimal类型转成Integer
请问在QT4中我用QTableView 和QSqlTableModel操作数据库,我想改变tableview某行的背景色应该怎么做?