您现在的位置是:首页
>
浮点数如何进行计算 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
很赞哦! (1034)
相关文章
- java循环创建大量对象 Java中如何在for循环语句中对类对象数组进行赋值?
- java已知s=1!+2!+3!+.+7.编写程式计算s的值.利用回圈进行计算
- Java Math类中的新功能,第1 部分:实数
- Java多线程程序设计二十三个要点[4]
- 下表数字 JAVA中的阵列的下标是用来干什么的?
- 用java定义一个一维整型数组array={1,2,3,4,5,6,7,8,9,10},输出该数组元素之和、最大值、最小值。
- Java多线程程序设计二十三个要点[2]
- java语言程式设计 输入一个正整数N,输出表达式1+1/2+1/3+.+1/N的值
- java编写程序:输入一个学生的成绩,给出相应的等,(用switch语句实现:0-59:D 60-69:C 70-84:B 85-100:A
- 小数保留位数方法 使用java代码实现保留小数点的位数
爱学记

微信收款码
支付宝收款码