📄 mathex.java
字号:
/**
* Copyright: Copyright (c) 2006 by 徐建协
*/
package com.common.util;
import java.math.BigDecimal;
/**
* <p>
* File Name:Math.java
* </p>
* <p>
* Title:浮点运算加强类,包括+ 、- 、* 、/、 四则运算
* </p>
* <p>
* Description:
* </p>
* <p>
* Company:
* </p>
*
* @author 徐建协 QQ:40255392 E-Mail:xujianxie@163.com
* @version 1.0 Aug 6, 2006
*/
public class MathEx {
/**
* 两个数相加
*
* @param d1
* String
* @param d2
* String
* @param len
* 结果的小数位数
* @return double
*/
public static double add(String d1, String d2, int len) {
BigDecimal big1 = new BigDecimal(d1);
BigDecimal big2 = new BigDecimal(d2);
big1 = big1.add(big2);
big1 = big1.setScale(len, BigDecimal.ROUND_HALF_UP);
return big1.doubleValue();
}
/**
* 两个数相加
*
* @param d1
* double
* @param d2
* double
* @param len
* 结果的小数位数
* @return double
*/
public static double add(double d1, double d2, int len) {
return MathEx.add(Double.toString(d1), Double.toString(d2), len);
}
/**
* 两个数相减
*
* @param d1
* String
* @param d2
* String
* @param len
* 结果的小数位数
* @return double
*/
public static double sub(String d1, String d2, int len) {
BigDecimal big1 = new BigDecimal(d1);
BigDecimal big2 = new BigDecimal(d2);
big1 = big1.subtract(big2);
big1 = big1.setScale(len, BigDecimal.ROUND_HALF_UP);
return big1.doubleValue();
}
/**
* 两个数相减
*
* @param d1
* double
* @param d2
* double
* @param len
* 结果的小数位数
* @return double
*/
public static double sub(double d1, double d2, int len) {
return MathEx.sub(Double.toString(d1), Double.toString(d2), len);
}
/**
* 两个数相乘
*
* @param d1
* String
* @param d2
* String
* @param len
* 结果的小数位数
* @return double
*/
public static double mul(String d1, String d2, int len) {
BigDecimal big1 = new BigDecimal(d1);
BigDecimal big2 = new BigDecimal(d2);
big1 = big1.multiply(big2);
big1 = big1.setScale(len, BigDecimal.ROUND_HALF_UP);
return big1.doubleValue();
}
/**
* 两个数相乘
*
* @param d1
* double
* @param d2
* double
* @param len
* 结果的小数位数
* @return double
*/
public static double mul(double d1, double d2, int len) {
return MathEx.mul(Double.toString(d1), Double.toString(d2), len);
}
/**
* 两个数相除
*
* @param d1
* String
* @param d2
* String
* @param len
* 结果的小数位数
* @return double
*/
public static double div(String d1, String d2, int len) {
BigDecimal big1 = new BigDecimal(d1);
BigDecimal big2 = new BigDecimal(d2);
big1 = big1.divide(big2, len, BigDecimal.ROUND_HALF_UP);
big1 = big1.setScale(len, BigDecimal.ROUND_HALF_UP);
return big1.doubleValue();
}
/**
* 两个数相除
*
* @param d1
* double
* @param d2
* double
* @param len
* 结果的小数位数
* @return double
*/
public static double div(double d1, double d2, int len) {
return MathEx.div(Double.toString(d1), Double.toString(d2), len);
}
public static double getDouble(String d1){
return MathEx.getDouble(d1, 2);
}
public static double getDouble(String d1,int len){
BigDecimal big1 = new BigDecimal(d1);
big1 = big1.setScale(len, BigDecimal.ROUND_HALF_UP);
return big1.doubleValue();
}
public static double getDouble(double d1,int len){
return MathEx.getDouble(Double.toString(d1), 2);
}
public static double getDouble(double d1){
return MathEx.getDouble(d1, 2);
}
private BigDecimal bigNum=null;
public MathEx(){
this.bigNum=new BigDecimal("0");
}
public MathEx(String num){
this(num,2);
}
public MathEx(String num,int len){
this.bigNum= new BigDecimal(num);
this.bigNum = this.bigNum.setScale(len, BigDecimal.ROUND_HALF_UP);
}
public synchronized void setNum(String num,int len){
this.bigNum= new BigDecimal(num);
this.bigNum = this.bigNum.setScale(len, BigDecimal.ROUND_HALF_UP);
}
public synchronized void setNum(String num){
this.setNum(num, 2);
}
public synchronized MathEx add(String d1,int len){
BigDecimal big1 = new BigDecimal(d1);
this.bigNum =this.bigNum.add(big1);
this.bigNum = this.bigNum.setScale(len, BigDecimal.ROUND_HALF_UP);
return this;
}
public synchronized MathEx add(String d1){
this.add(d1, 2);
return this;
}
public synchronized MathEx add(double d1, int len){
BigDecimal big1 = new BigDecimal(Double.toString(d1));
this.bigNum =this.bigNum.add(big1);
this.bigNum = this.bigNum.setScale(len, BigDecimal.ROUND_HALF_UP);
return this;
}
public synchronized MathEx add(double d1){
this.add(d1,2);
return this;
}
public synchronized MathEx sub(String d1,int len){
BigDecimal big1 = new BigDecimal(d1);
this.bigNum =this.bigNum.subtract(big1);
this.bigNum = this.bigNum.setScale(len, BigDecimal.ROUND_HALF_UP);
return this;
}
public synchronized MathEx sub(String d1){
this.sub(d1, 2);
return this;
}
public synchronized MathEx sub(double d1,int len){
BigDecimal big1 = new BigDecimal(Double.toString(d1));
this.bigNum =this.bigNum.subtract(big1);
this.bigNum = this.bigNum.setScale(len, BigDecimal.ROUND_HALF_UP);
return this;
}
public synchronized MathEx sub(double d1){
this.sub(d1, 2);
return this;
}
public synchronized MathEx mul(String d1,int len){
BigDecimal big1 = new BigDecimal(d1);
this.bigNum =this.bigNum.multiply(big1);
this.bigNum = this.bigNum.setScale(len, BigDecimal.ROUND_HALF_UP);
return this;
}
public synchronized MathEx mul(String d1){
this.mul(d1, 2);
return this;
}
public synchronized MathEx mul(double d1,int len){
BigDecimal big1 = new BigDecimal(Double.toString(d1));
this.bigNum =this.bigNum.multiply(big1);
this.bigNum = this.bigNum.setScale(len, BigDecimal.ROUND_HALF_UP);
return this;
}
public synchronized MathEx mul(double d1){
this.mul(d1, 2);
return this;
}
public synchronized MathEx div(String d1,int len){
BigDecimal big1 = new BigDecimal(d1);
this.bigNum=this.bigNum.divide(big1, len, BigDecimal.ROUND_HALF_UP);
this.bigNum = this.bigNum.setScale(len, BigDecimal.ROUND_HALF_UP);
return this;
}
public synchronized MathEx div(String d1){
this.div(d1, 2);
return this;
}
public synchronized MathEx div(double d1,int len){
BigDecimal big1 = new BigDecimal(Double.toString(d1));
this.bigNum=this.bigNum.divide(big1, len, BigDecimal.ROUND_HALF_UP);
this.bigNum = this.bigNum.setScale(len, BigDecimal.ROUND_HALF_UP);
return this;
}
public synchronized MathEx div(double d1){
this.div(d1, 2);
return this;
}
public synchronized double getDouble(){
return this.bigNum.doubleValue();
}
public synchronized String toString(){
return this.bigNum.toString();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// System.out.println(0.05+0.01);
System.out.println(MathEx.div("0.00000", "100", 6));
/*MathEx math=new MathEx();
math.add(2).add(2);
//math.add(1).add(2).div("2",4);
System.out.println(math.toString());*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -