/**
*
*/
package edu.fjut.bignumber;
import java.math.BigInteger;
/**
*
* 大数操作指的是操作的数字非常大,大到超过其数据类型的表示范围
* 如:999999999999999999999999999*9999999999999999999999999
* 所以此时就需要使用对象的形式进行操作,在以前若碰到此问题,实际
* 上都是采用字符串的形式进行处理的(进行拆分、一位一位的计算)。
*
* 在Java中为了解决这样的难题,提供了两个大数据对象:
* BigInteger(大整数)、BigDecimal(大浮点数)decimal为小数的意思
*/
public class BigNumberDemo {
public static void main(String[] args) {
String num1="9999999999999999999999";
String num2="8888888888888888888888";
BigInteger bg1=new BigInteger(num1);//实例化BigInteger对象
BigInteger bg2=new BigInteger(num2);
System.out.println("加法操作:"+bg1.add(bg2));
System.out.println("减法操作:"+bg1.subtract(bg2));
System.out.println("乘法操作:"+bg1.multiply(bg2));
System.out.println("除法操作:"+bg1.divide(bg2));//只得到商值,无余数
BigInteger []result=bg1.divideAndRemainder(bg2);//相除之后有余数
System.out.println("相除之后的商值为"+result[0]);//第一个值为商值
System.out.println("相除之后的余数为"+result[1]);//第二个值为余数
}
/*输出结果为:
* 加法操作:18888888888888888888887
* 减法操作:1111111111111111111111
* 乘法操作:88888888888888888888871111111111111111111112
* 除法操作:1
* 相除之后的商值为1
* 相除之后的余数为1111111111111111111111
*/
}
/**
*
*/
package edu.fjut.bignumber;
import java.math.BigDecimal;
/**
* BigDecimal类的主要功能是进行小数的大数据计算,最重要的
* 一点是,计算结果可以精确到指定的四舍五入位数.
*
* 如果想要进行四舍五入操作,则必须依靠依靠以下方法:
* public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)
* --scale表示四舍五入的位数
* --roundingMode表示四舍五入的操作模式,ROUND_HALF_UP......
*/
class MyMath{
public static double add(String num1,String num2){
BigDecimal bd1=new BigDecimal(num1);
BigDecimal bd2=new BigDecimal(num2);
return bd1.add(bd2).doubleValue();//拆箱
}
public static double sub(String num1,String num2){
BigDecimal bd1=new BigDecimal(num1);
BigDecimal bd2=new BigDecimal(num2);
return bd1.subtract(bd2).doubleValue();
}
public static double mul(String num1,String num2){
BigDecimal bd1=new BigDecimal(num1);
BigDecimal bd2=new BigDecimal(num2);
return bd1.multiply(bd2).doubleValue();//拆箱
}
public static double div(String num1,String num2,int scale){
BigDecimal bd1=new BigDecimal(num1);
BigDecimal bd2=new BigDecimal(num2);
return bd1.divide(bd2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static double round(double num,int scale){
BigDecimal bd1=new BigDecimal(num);
BigDecimal bd2=new BigDecimal(1);
return bd1.divide(bd2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
public class BigDecimalDemo {
public static void main(String[] args) {
String num1="39379.23412";
String num2="68258.73529";
System.out.println("加法操作:"+MyMath.add(num1, num2));
System.out.println("加法操作,四舍五入(保留二位):"+MyMath.round(MyMath.add(num1, num2),2));
System.out.println("除法操作,四舍五入(保留三位):"+MyMath.div(num1, num2,3));
}
/*输出结果为:
* 加法操作:107637.96941
* 加法操作,四舍五入(保留二位):107637.97
* 除法操作,四舍五入(保留三位):0.577
*/
}
分享到:
相关推荐
一个详细讲解JAVA_大数操作的例子 希望可以帮助到你。
031110_【第11章:Java常用类库】_大数操作(BigIntger、BigDecimal)笔记
031110_【第11章:Java常用类库】_大数操作(BigIntger、BigDecimal)笔记.pdf 031111_【第11章:Java常用类库】_对象克隆技术笔记.pdf 031112_【第11章:Java常用类库】_Arrays笔记.pdf 031113_【第11章:Java常用...
BigInteger操作大整数 BigDecimal指定小数的保留位数 首先,long的范围是:-2^63 ~ 2^63-1 超过这个范围,就是用大数类,最好用string字符串类型进行接收。 BigInteger常用基本方法 BigInteger(String value): 构造...
Java Number类是Java中的一个抽象类,它是所有数值类型的超类,包括整数、浮点数和大数。它提供了一组用于操作数值类型的方法,如转换、比较、算术运算等。 二、Java Number类提供了哪些基本的数字操作? Java ...
3: 支持大数操作,数据范围在10的8000次方范围内。在超过10的8千次左右时,判其溢出。 4: 支持科学计数法(小数超过38位舍之) 5: 错误与警告的提示。如输入超过39位时弹出提示(输入过长)等。
包括条形码操作工具、二维码操作、图片验证码工具、动态密码工具、雪花算法id工具、签名工具、poi导出、json转换、文件操作、分页、日期处理、jdbc、大数运算及格式化、gzip压缩、http 结构说明如下: ...
5、掌握Java数据库开发(JDBC操作)的准备。 6、掌握和理解导入包的类。 二、实验内容和主要步骤 ★专题:核心专题技术★ 1.枚举基础和应用 2.包装类和自动装箱 3.异常基础实验 4.包访问权限实验 5.[选做]内部类型...
理解BigDecimal类的使用,并了解如何处理大数精度计算和避免精度丢失。 掌握Math类提供的各种数学计算方法,如三角函数、指数运算等。 学习Random类的使用,包括生成随机数和调整范围。 理解DecimalFormat类的功能,...
对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作,下面这篇文章给大家介绍了Java中BigDecimal的加减...
java速度比较慢,到后面就比较慢了,参考windows-7下的功能,在超过10的8千次左右时,判其溢出。 4: 支持科学计数法表示(小数超过38位舍之) 5: 错误与警告的提示。如输入超过39位时弹出提示(输入过长)等。 6...
高级java笔试题 收藏总结 算法及数据结构 数据结构总结 算法总结 操作系统 Linux Android 设计模式 编程语言 嵌入式开发及DNN加速 前端及UI设计 程序打包及安装 测试 测试驱动开发总结 深度学习及机器视觉 机器...
大数过程由Vu Dinh Anh创建于2019年10月8日目的: 我已经为希望处理巨大数字而不丢失数据的人们编写了一些Java类。如何使用: 打开文件“ DriveCode.java”,我已在其中编写了所有示例和说明。 有后缀,但最多只能有...
运行时异常,也叫非检查异常(NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException、ArithmeticException),会由Java虚拟机自动抛出并自动捕获,此类异常的出现绝大数情况是代码本身有问题...
我还自己实现了一个大数数据类型,以支持斐波那契数计算的操作 安装 要安装,只需拉master分支即可下载该应用程序。 对于bash shell,可以键入./start.sh来编译所有类。 对于其他shell,请运行: javac BigNum....
题解、Java、C++、Python、后端面试、操作系统、计算机网络、系统设计 所有资料来自微信: 1、技术面试必备基础知识、Leetcode 题解、Java、C++、Python、后端面试、操作系统、计算机网络、系统设计 2、AI算法岗求职...
使用时导包:java.math.BigInteger 作用:可以使用BigInteger操作大整数,也可以转换进制。如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类...
修改BUG:数值计算支持库“大数.四舍五入()”命令在最高位进位时,会导致程序异常。 17. 修改BUG:办公组件支持库打印进度对话框的标题和用户设置的内容不一致。 18. 修改BUG:办公组件静态编译后无法正常销毁。 ...
⑤ 提示信息完整、操作舒适、图形界面雅观 首先要说明的是,事实上,当今的计算机还不足以聪明到立刻计算生成一个很大的随机素数。一般来说,要得到100%准确的大素数,都是通过查已经计算好的素数表的方式。但是素数...