您现在的位置是:首页
>
浮点数如何进行计算 Java简单类型进行精确浮点数运算
Java简单类型进行精确浮点数运算 由于Java的简单类型不能够精确的对浮点数进行运算 这个工具类提供精确的浮点数运算 包括加减乘除和四舍五入 以下为代码 im ort java
Java简单类型进行精确浮点数运算

由于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(); } } lishixinzhi/Article/program/Java/Javascript/201311/25460
很赞哦! (1063)
- 上一篇
自己一个人去陌生的城市工作 女生18岁,想一个人去一个陌生的城市工作,没有什么工作经验 没有一个认识的人 也不知道去哪里
女生18岁,想一个人去一个陌生的城市工作,没有什么工作经验 没有一个认识的人 也不知道去哪里 女生18岁,想一个人去一个陌生的城市工作,没有什么工作经验 没有一个认识的人 也不知道去哪里不知道干嘛要一
- 下一篇
13到14欧冠 11到12赛季欧冠~ 你觉得哪支队伍更有希望~ 为什么!
11到12赛季欧冠~ 你觉得哪支队伍更有希望~ 为什么 11到12赛季欧冠~ 你觉得哪支队伍更有希望~ 为什么欧冠后期会进入淘汰制,这种偶然性就会增大,单场淘汰不仅要看技术,更重要的是运气,真正进入决