Java实现⼤数运算
⼀、⼤数运算介绍
⼤数运算,顾名思义,就是很⼤的数值的数进⾏⼀系列的运算。它是指由于编程语⾔提供的基本数值数据类型表⽰的数值范围有限,不能满⾜较⼤规模的⾼精度数值计算,因此需要利⽤其他⽅法实现⾼精度数值的计算,于是产⽣了⼤数运算。
⼆、Java实现⼤数运算⽅法
在这篇⽂章中给⼤家介绍了Java中的⼤数类BigDecimal的⽤法,那么在Java中我们实现⼤数运算时便可以使⽤这个类进⾏快速简便的实现。
实现代码如下:
import java.math.BigDecimal;
class BigDecimalDemo
{
static final int location = 10; //⼩数点后位数
//加法返回 num1+num2
public double add(double num1, double num2){
BigDecimal b1 = new BigDecimal(num1);
BigDecimal b2 = new BigDecimal(num2);
return b1.add(b2).doubleValue();
}
//减法返回 num1-num2
public double sub(double num1, double num2){
BigDecimal b1 = new BigDecimal(num1);
BigDecimal b2 = new BigDecimal(num2);
bigdecimal取值范围
return b1.subtract(b2).doubleValue();
}
//乘法返回 num1*num2
public double mul(double num1, double num2){
BigDecimal b1 = new BigDecimal(num1);
BigDecimal b2 = new BigDecimal(num2);
return b1.multiply(b2).doubleValue();
}
//除法返回 num1/num2
public double div(double num1, double num2){
return div(num1,num2,location);
}
//除法返回num1/num2 ⾃定义⼩数点后位数
public double div(double num1, double num2, int _location){
BigDecimal b1 = new BigDecimal(num1);
BigDecimal b2 = new BigDecimal(num2);
return b1.divide(b2,_location,BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static void main(String[] args)
{
BigDecimalDemo bd = new BigDecimalDemo();
System.out.println(bd.add(12.123123,2)); //14.123123
System.out.println(bd.sub(12.123,5.1)); //7.023
System.out.println(bd.mul(9.99999,8.8888)); //88.887911112
System.out.println(bd.div(13,3)); //4.3333333333 ⼩数点后10位
System.out.println(bd.div(13,3,20)); //4.333333333333333 ⼩数点后15位
double b = 4.123123123123123123123123123; //4.123123123123123 double⼩数点后15位
System.out.println(b);
BigDecimal b2 = new BigDecimal(4.123123123123123123123123123); //4.12312312312312290174531881348229944705963134765625
System.out.println(b2);
}
}
三、实现总结
这篇⽂章只是提供了⼀种⼤家在平时需要使⽤⼤数运算的场合下⼀种快捷的实现,只是对Java的相关API进⾏的封装,并未涉及算法实现原理。⾄于对⼤数运算的底层实现有兴趣的⼈,可以研究Java⼤数类的实现源码。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论