java--大数操作

 

/**
 * 
 */
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
     */
}

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值