import java.math.BigDecimal;
/**
* 运算工具
*
* 提供精确的浮点数运算,包括加减乘除和四舍五入
*
* @author lchhh0005
*
*/
public class ArithTool {
// 默认除法算法精确度
private static final int DEF_DIV_SCALE = 10;
private ArithTool() {
}
/**
* 提供精确的加法运算
* @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的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 确的浮点数运算,包括加减乘除和四舍五入。
在MARS4.5中成功编译运行。有人机交互的字符界面,可供用户进行功能选择,用户输入浮点数,选择加减乘除功能,输出十进制,二进制,十六进制的结果。
将近250行的算法 实现了通过字符串进行加减乘除四则运算 纯通过处理字符串和数组实现 希望能帮助大家: 例如:String input "33+26 77+70"; String result ""; try { result Account...
精确的加减乘除,这个类里提供了精确的加法和减法,乘法和除法 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 确的浮点数运算,包括加减乘除和四舍五入。
mips整数运算模拟IEEE754浮点数运算的加减乘除
浮点数加减乘除运算,里面结合了从网上搜索到的accAdd版本以及新增版本的浮点加减乘除运算,明显能直出新补充方法能满足实际需求,解决js对于浮点运算的bug.
按照IEEE754浮点数标准,完整的浮点数加乘除四则运算的程序,每个都是单独的一个文件,注释完整。编译仿真全通过!
浮点数的加减乘除运算 白中英,科技出版社的课件
FPU - verilog实现的浮点运算单元,支持标准浮点数加减乘除 源代码也可以在github获取:https://github.com/yunwei37/ZJU-CS-GIS-ClassNotes/
这是一个使用JAVA实现的泛型编程,分为两部分,第一部分创建泛型类,并实例化...第二部分用户自行输入0--4,选择要进行的加减乘除运算或退出,再输入要进行运算的两个数,并返回运算结果及结果类型。 代码完美运行。
Java编写的计算器图形界面实现加减乘除带括号运算 版本1.0 1、图形化界面 2、计算器显示部分分为两个区域:第一行显示输入将要计算的数值及符号,第二行显示结果,第一行字体要小,第二行字体要大,且加粗。 ...
解决JS浮点数(小数)计算加减乘除的BUG
可以实现数据的加减乘除,简单方便对于学习不太好的最合适
大整数四则运算 BigInt 加减乘除 括号 优先级,Python支持无限精度的运行,Java有BigInteger类,但是对C和C++就只能自己实现,这是一个带加减乘除运算的实现。
微信小程序实现的简易计算器,可以实现简单的运算(包括:加减乘除、平方根等) 微信小程序实现的简易计算器,可以实现简单的运算(包括:加减乘除、平方根等) 微信小程序实现的简易计算器,可以实现简单的运算...
Java中BigInteger的数学运算,BigDecimal 加减乘除运算,Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大...
数据结构课程设计-大整数加减乘除运算的实现,包含源代码和实验报告,解压后可直接使用
五年级小数加减乘除混合运算计算题练习题集.doc