java 中数据计算

      在编码的时候,偶尔会进行数字计算,编码完成后,编译、运行,自己测试,都通过了,但是上生产环境后,一天或者一个星期没问题,可能有一天会出错,查看日志,原来是内存溢出,原来是数字溢出。代码如果写严谨一点就应该发现在java程序中有与数据类型有长度限制,所以一般数字计算都不用原始数据类型,需要转换成BigInteger或者BigDecimal。
源码如下:
package com.think.cla;

import java.math.BigDecimal;
import java.math.BigInteger;

public class BigNumberMath {
	
	public void NumberMath(int x,int y ,double i,double j){
		
		// 加法运算
		BigInteger numintj = BigInteger.valueOf(x).add(BigInteger.valueOf(y));
		BigDecimal numdouj = BigDecimal.valueOf(i).add(BigDecimal.valueOf(j));
		
		//减法运算
		BigInteger numintjj = BigInteger.valueOf(x).subtract(BigInteger.valueOf(y));
		BigDecimal numdoujj = BigDecimal.valueOf(i).subtract(BigDecimal.valueOf(j));
		
		//乘法运算
		BigInteger numintc = BigInteger.valueOf(x).multiply(BigInteger.valueOf(y));
		BigDecimal numdouc = BigDecimal.valueOf(i).multiply(BigDecimal.valueOf(j));
		
		//除法运算
		BigInteger numintcc = BigInteger.valueOf(x).divide(BigInteger.valueOf(y));
		BigDecimal numdoucc = BigDecimal.valueOf(i).divide(BigDecimal.valueOf(j));
		
		System.out.println("整数数据相加:"+numintj);
		System.out.println("精度数据相加: "+numdouj);
		
		System.out.println("整数数据相减:"+numintjj);
		System.out.println("精度数据相减: "+numdoujj);
		
		System.out.println("整数数据相乘:"+numintc);
		System.out.println("精度数据相乘: "+numdouc);
		
		System.out.println("整数数据相除:"+numintcc);
		System.out.println("精度数据相除: "+numdoucc);
	}
	
}

你可能感兴趣的:(java 中数据计算)