java中浮点型数字运算
来源:互联网 发布:淘宝定制产品如何发布 编辑:程序博客网 时间:2024/05/21 22:43
Java中的浮点型(float和double)因为在计算机中存储方式的不同,直接运算会丢失精度;
所以一般会借助运算类java.math.BigDecimal来包装计算。
public class Arith {
private static final int DEF_DIV_SCALE = 10;
/**
* * 两个Double数相加 *
* @param v1
* @param v2
* @return Double
*/
public static Double add(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.add(b2).doubleValue());
}
/**
* * 两个Double数相减 *
* @param v1
* @param v2
* @return Double
*/
public static Double sub(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.subtract(b2).doubleValue());
}
/**
* * 两个Double数相乘 *
* @param v1
* @param v2
* @return Double
*/
public static Double mul(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.multiply(b2).doubleValue());
}
/**
* * 两个Double数相除 *
* @param v1
* @param v2
* @return Double
*/
public static Double div(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.divide(b2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP)
.doubleValue());
}
/**
* * 两个Double数相除,并保留scale位小数 *
* @param v1
* @param v2
* @param scale
* @return Double
*/
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(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP)
.doubleValue());
}
public static void main(String[] args) {
double d1 = add(2.5,4.5);
System.out.println("d1 = " + d1);
double d2 = sub(4.5,2.5);
System.out.println("d2 = " + d2);
double d3 = mul(4.5,2.5);
System.out.println("d3 = " + d3);
double d4 = div(4.5,2.5);
System.out.println("d4 = " + d4);
double d5 = div(4.5, 2.5, 0);
System.out.println("d5 = " + d5);
}
}
- java中浮点型数字运算
- JS 浮点型数字运算
- javascript 中浮点型数字的运算精度
- javascript 中浮点型数字的运算精度
- javascript中浮点型数字的运算精度
- JAVA中浮点运算探究
- Python浮点数字运算
- js中浮点型运算
- java中浮点数的高精度运算
- JAVA中精确的浮点运算
- java中浮点数的运算
- js中浮点型是如何运算
- java 浮点数运算
- Java浮点运算-BigDecimal
- Java浮点运算精度
- Java浮点数运算
- 关于商业运算中浮点型运算丢失精度问题
- java中double型数字运算异常的解决方法
- c#调用存储过程执行任务超时现象
- c语言访问mysql 完整例子
- jQuery窗口、文档各种高度的理解
- CocoaPods &CocoaControl
- Object-C Foundation 框架汇总之-数组,字典,集合
- java中浮点型数字运算
- listview viewpage 圆点切换,定时。
- How To Resize ext3 Partitions Without Losing Data
- ext可编辑grid保存,删除修改
- 选好关键词,是SEO优化的第一步
- 如何编写一个CocoaPods的spec文件
- Unicode详解(UCS-2,UCS-4,UTF-8,UTF-16,UTF-32)
- 如何做Xcode工程的工程化管理
- OCP 1Z0 053 40