bigdecimal 加减乘除(bigdecimal加运算)
本文目录
- bigdecimal加运算
- double类型加减乘除
- java中如何实现字符与数字加减运算
- java中bigdecimal类型的变量如何相互加减乘除
- bigdecimal长度包含小数位吗
- java的加减乘除运算
- java中如何进行2个分数的加减乘除
- java加减乘除是什么类
bigdecimal加运算
bigdecimal加减乘除运算顺序如下:
首先是bigdecimal的初始化,加法 add()函数、减法subtract()函数、乘法multiply()函数、除法divide()函数、绝对值abs()函数。
注意:
1)System.out.println()中的数字默认是double类型的,double类型小数计算不精准。
2)使用BigDecimal类构造方法传入double类型时,计算的结果也是不精确的!
因为不是所有的浮点数都能够被精确的表示成一个double 类型值,有些浮点数值不能够被精确的表示成 double 类型值,因此它会被表示成与它最接近的 double 类型的值。必须改用传入String的构造方法。
除法divide()参数使用;
使用除法函数在divide的时候要设置各种参数,要精确的小数位数和舍入模式,不然会出现报错。
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。
double类型加减乘除
/** * double类型加法 * @param v1 * @param v2 * @return */ public double add(double v1,double v2){ BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2).doubleValue(); } /** * double减法 * @param v1 * @param v2 * @return */ public double sub(double v1,double v2){ BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.subtract(b2).doubleValue(); } /** * double乘法 * @param v1 * @param v2 * @return */ public double mul(double v1,double v2){ BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.multiply(b2).doubleValue(); } /** * double除法 * @param v1 * @param v2 * @param scale 精确到小数点几位 * @return */ public double div(double v1,double v2,int scale){ if(scale《0){ throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); }
java中如何实现字符与数字加减运算
将字符串转换成数字:有两种方法:第一种:比如说;a="123",b=2,那么int num = Integer.parseInt(a);然后与另外数字加减;第二种:运用BigDecimal num = new BigDecimal(a);BigDecimal num2 = new BigDecimal(b);BigDecimal result = num.add(num2);或者减法:BigDecimal result = num.subtract(num2);通过调用BigDecimal的各种方法即可以实现加减乘除。两种方法比较:第一种只可以实现整数转换;第二种可以实现任何类型的转换,而且计算精度高。
java中bigdecimal类型的变量如何相互加减乘除
1、// 加;
1)BigDecimal add = ma.add(mb);
2)System.out.println("加法:"+add);
2、// 减;
1)BigDecimal sub = ma.subtract(mb);
2)System.out.println("减法:"+sub);
3、// 乘;
1)BigDecimal mul = mb.multiply(md);
2)System.out.println("乘法:"+mul);
4、// 除
1)BigDecimal div = mb.divide(md);
2)System.out.println("除法:"+div);
3)System.out.println("===================");
4)mc = mc.setScale(2, BigDecimal.ROUND_HALF_UP);
5)System.out.println("四舍五入:"+mc);
6)System.out.println("===================");
7)mc = mc.negate();
8)System.out.println("负数:"+mc);
9)System.out.println("===================");
bigdecimal长度包含小数位吗
是包含的,但有时候会对精度精确不准确。因为我们的计算机是二进制的。浮点数没有办法是用二进制进行精确表示。我们的CPU表示浮点数由两个部分组成:指数和尾数,这样的表示方法一般都会失去一定的精确度,有些浮点数运算也会产生一定的误差。如:0.5的二进制表示并非就是精确的0.5。反而最为接近的二进制表示是 0.049999999999999996。这种情况下我们可以用java.math包下面的BigDecimal类,BigDecimal主要用于高精度的数据计算,例如计算金额的时候,还有工程测量计算的时候。BigDecimal的提供了add(),subtract(),multiply()和divide()四种方法,分别为加减乘除。
java的加减乘除运算
使用BigDecimal并且一定要用String来够造。实现方法如下: import java.math.BigDecimal;/** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 * 确的浮点数运算,包括加减乘除和四舍五入。 */ public class Arith{//默认除法运算精度 private static final int DEF_DIV_SCALE = 10;//这个类不能实例化 private Arith(){ }/** * 提供精确的加法运算。 * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */ public static double add(double v1,double v2){ BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2).doubleValue(); }/** * 提供精确的减法运算。 * @param v1 被减数 * @param v2 减数 * @return 两个参数的差 */ public static double sub(double v1,double v2){ BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.subtract(b2).doubleValue(); }/** * 提供精确的乘法运算。 * @param v1 被乘数 * @param v2 乘数 * @return 两个参数的积 */ public static double mul(double v1,double v2){ BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.multiply(b2).doubleValue(); }/** * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 * 小数点以后10位,以后的数字四舍五入。 * @param v1 被除数 * @param v2 除数 * @return 两个参数的商 */ public static double div(double v1,double v2){ return div(v1,v2,DEF_DIV_SCALE); }/** * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 * 定精度,以后的数字四舍五入。 * @param v1 被除数 * @param v2 除数 * @param scale 表示表示需要精确到小数点以后几位。 * @return 两个参数的商 */ public static double div(double v1,double v2,int scale){ if(scale《0){ throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); }/** * 提供精确的小数位四舍五入处理。 * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */ public static double round(double v,int scale){ if(scale《0){ throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } BigDecimal b = new BigDecimal(Double.toString(v)); BigDecimal one = new BigDecimal("1"); return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); } };
java中如何进行2个分数的加减乘除
BigDecimal fraction1 = new BigDecimal(1/2); //我这里用的1/2BigDecimal fraction2 = new BigDecimal(1/4); //我这里用的1/4fraction1.add(fraction2); //加fraction1.sub(fraction2);//减fraction1.mulity(fraction2);//乘fraction1.divide(fraction2);//除
具体可以再看看BigDecimal的api文档,对于除不尽的数,可以设置精度。另外我的方法是凭印象写的,不知有没有错,还请参考api文档。
java加减乘除是什么类
java中实现加减乘除的类是java.math.BigDecimal类. BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。
加法运算:调用BigDecimal类的add方法即可
BigDecimal b1 = new BigDecimal("1");BigDecimal b2 = new BigDecimal("2");BigDecimal result = b1.add(b2);//加法System.out.println(result);
减法运算:调用BigDecimal类的subtract方法即可
BigDecimal b1 = new BigDecimal(3.2);BigDecimal b2 = new BigDecimal(1.6);BigDecimal result = b1.subtract(b2);//减法System.out.println(result);
乘法运算:调用BigDecimal类的multiply方法即可
BigDecimal b1 = new BigDecimal(9);BigDecimal b2 = new BigDecimal(8.2);BigDecimal result = b1.multiply(b2);//乘法System.out.println(result);
除法运算:调用BigDecimal类的divide方法即可。
注意: 除法运算存在除不尽的情况,比如1.0/3=0.333333.. 我们需要指定小数点后面的长度,以及有效的舍入模式(例如四舍五入模式).
BigDecimal b1 = new BigDecimal("1");BigDecimal b2 = new BigDecimal("3");int scale = 5;//scale 指定小数点后面的位数为5位double result = b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();// 除法// BigDecimal.ROUND_HALF_UP 表示四舍五入System.out.println(result);
备注:
1:BigDecimal的构造参数有很多,但浮点类型建议转换成字符串类型, 避免精度的丢失.
double d1 =0.001;//浮点类型String s1 = Double.toString(d1);//转成字符串BigDecimal b1 = new BigDecimal(s1);//使用字符串作为构造参数
2:BigDecimal类, 内存占用比基本类型多,并且为了计算的精度,速度比double慢一点.所以,只有在需要精确计算的情况下,才使用BigDecimal类进行. 普通运算,还是多使用+-*/运算符,位运算符等.
更多文章:
花刺代理1 8(请问花刺代理验证 1.8,这个软件有什么用怎么用啊)
2024年5月19日 23:24
仙侠世界职业选择(仙侠世界2职业选择推荐 什么职业厉害好玩)
2024年6月30日 10:23
云端课堂本地录制会录到软件外面的画面吗?教育直播系统开发公司,教育直播平台排名哪家好
2024年6月10日 08:20
刷宝短视频下载赚钱版(刷宝短视频一天挣多少,刷宝元宝怎么换钱)
2024年7月13日 08:26
魔兽争霸3冰封王座手机版(魔兽争霸3冰封王座在哪里可以下载到)
2024年8月30日 11:25
win7如何设置wifi热点(win7怎么设置我wifi热点)
2024年6月8日 16:09