java.math.BigDecimal
BigDecimal一共有4个够造方法,让我先来看看其中的两种用法:
第一种:BigDecimal(double val)
Translates a double into a BigDecimal.
第二种:BigDecimal(String val)
Translates the String repre sentation of a BigDecimal into a BigDecimal.
使用BigDecimal要用String来够造,要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal,在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果(BigDecimal)再转换为浮点数。
代码如下 | 复制代码 |
publicstaticdoubleadd(doublev1,doublev2) publicstaticdoublesub(doublev1,doublev2) publicstaticdoublemul(doublev1,doublev2) publicstaticdoublediv(doublev1,doublev2) publicstaticdoublediv(doublev1,doublev2,intscale) publicstaticdoubleround(doublev,intscale) |
工具类:Arith
代码如下 | 复制代码 |
/** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 确的浮点数运算,包括加减乘除和四舍五入。 */ publicclassArith {// 默认除法运算精度 privatestaticfinalintDEF_DIV_SCALE =10;// 这个类不能实例化
privateArith() { }
/** * 提供精确的加法运算。 * * @param v1 * 被加数 * @param v2 * 加数 * @return 两个参数的和 */ publicstaticdoubleadd(doublev1,doublev2) { BigDecimal b1 =newBigDecimal(Double.toString(v1)); BigDecimal b2 =newBigDecimal(Double.toString(v2)); returnb1.add(b2).doubleValue(); }
/** * 提供精确的减法运算。 * * @param v1 * 被减数 * @param v2 * 减数 * @return 两个参数的差 */ publicstaticdoublesub(doublev1,doublev2) { BigDecimal b1 =newBigDecimal(Double.toString(v1)); BigDecimal b2 =newBigDecimal(Double.toString(v2)); returnb1.subtract(b2).doubleValue(); }
/** * 提供精确的乘法运算。 * * @param v1 * 被乘数 * @param v2 * 乘数 * @return 两个参数的积 */ publicstaticdoublemul(doublev1,doublev2) { BigDecimal b1 =newBigDecimal(Double.toString(v1)); BigDecimal b2 =newBigDecimal(Double.toString(v2)); returnb1.multiply(b2).doubleValue(); }
/** * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 小数点以后10位,以后的数字四舍五入。 * * @param v1 * 被除数 * @param v2 * 除数 * @return 两个参数的商 */ publicstaticdoublediv(doublev1,doublev2) { returndiv(v1, v2, DEF_DIV_SCALE); }
/** * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。 * * @param v1 * 被除数 * @param v2 * 除数 * @param scale * 表示表示需要精确到小数点以后几位。 * @return 两个参数的商 */ publicstaticdoublediv(doublev1,doublev2,intscale) { if(scale<0) { thrownewIllegalArgumentException( "The scale must be a positive integer or zero"); } BigDecimal b1 =newBigDecimal(Double.toString(v1)); BigDecimal b2 =newBigDecimal(Double.toString(v2)); returnb1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); }
/** * 提供精确的小数位四舍五入处理。 * * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */ publicstaticdoubleround(doublev,intscale) { if(scale<0) { thrownewIllegalArgumentException( "The scale must be a positive integer or zero"); } BigDecimal b =newBigDecimal(Double.toString(v)); BigDecimal one =newBigDecimal("1"); returnb.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } }; |
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级