知识大全 Java简单类型进行精确浮点数运算
Posted 知
篇首语:遇到一些人,知道一些事,才能懂的理解与珍惜,才能看清自己的方向。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java简单类型进行精确浮点数运算相关的知识,希望对你有一定的参考价值。
Java简单类型进行精确浮点数运算 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
由于Java的简单类型不能够精确的对浮点数进行运算 这个工具类提供精确的浮点数运算 包括加减乘除和四舍五入 以下为代码 import java math BigDecimal; public class Arith //默认除法运算精度 private static final int DEF_DIV_SCALE = ; //这个类不能实例化 private Arith() /** * 提供精确的加法运算 * @param v 被加数 * @param v 加数 * @return 两个参数的和 */ public static double add(double v double v ) BigDecimal b = new BigDecimal(Double toString(v )); BigDecimal b = new BigDecimal(Double toString(v )); return b add(b ) doubleValue(); /** * 提供精确的减法运算 * @param v 被减数 * @param v 减数 * @return 两个参数的差 */ public static double sub(double v double v ) BigDecimal b = new BigDecimal(Double toString(v )); BigDecimal b = new BigDecimal(Double toString(v )); return b subtract(b ) doubleValue(); /** * 提供精确的乘法运算 * @param v 被乘数 * @param v 乘数 * @return 两个参数的积 */ public static double mul(double v double v ) BigDecimal b = new BigDecimal(Double toString(v )); BigDecimal b = new BigDecimal(Double toString(v )); return b multiply(b ) doubleValue(); /** * 提供(相对)精确的除法运算 当发生除不尽的情况时 精确到 * 小数点以后 位 以后的数字四舍五入 * @param v 被除数 * @param v 除数 * @return 两个参数的商 */ public static double div(double v double v ) return div(v v DEF_DIV_SCALE); /** * 提供(相对)精确的除法运算 当发生除不尽的情况时 由scale参数指 * 定精度 以后的数字四舍五入 * @param v 被除数 * @param v 除数 * @param scale 表示表示需要精确到小数点以后几位 * @return 两个参数的商 */ public static double div(double v double v int scale) if(scale< ) throw new IllegalArgumentException( The scale must be a positive integer or zero ); BigDecimal b = new BigDecimal(Double toString(v )); BigDecimal b = new BigDecimal(Double toString(v )); return b divide(b scale BigDecimal ROUND_HALF_UP) doubleValue(); /** * 提供精确的小数位四舍五入处理 * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */ public static double round(double v int scale) if(scale< ) throw new IllegalArgumentException( The scale must be a positive integer or zero ); BigDecimal b = new BigDecimal(Double toString(v)); BigDecimal one = new BigDecimal( ); return b divide(one scale BigDecimal ROUND_HALF_UP) doubleValue(); cha138/Article/program/Java/Javascript/201311/25460相关参考