⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mathex.java

📁 使用WEBWORK,SPRING,HIBERNATE编写的简单的添加
💻 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 + -