JAVA实现高精度整数加减乘

首先,需要指出的是,java内的BigInteger类很好用,功能相当全面。像加减乘这样的基础操作都是可以胜任的。所以,在java中其实没有手动实现高精度的必要。

所以写下这篇博客的初衷并不是放在实际情况下使用,而是当做高精度算法的练习,也同时练习java编程能力。

封装类内容:

实现接口

克隆接口Cloneable,重写clone方法。便于复制

可比较接口Comparable,实现CompareTo方法,便于比较排序。
(可搭配各种数据结构使用)

成员变量

数组number,用于记录每一位,需要指出的是,该类仅支持十进制的运算。

数组长度len,用于表示数组中数字长度,便于统计和计算

符号变量sign,用于作为符号项参与运算。取值为1或-1.

成员方法:
构造方法

提供两种构造方法,用于初始化

传入整数,按位倒序转化进数组

传入字符串,检索符号,倒序存入数组

全局方法

打印方法void print,以带符号字符串的形式打印。

高精度加法void add,传入大整数,加到对象上

高精度减法void minus,传入大整数,计算减法

高精度乘法void multiply,传入大整数,计算乘法

克隆方法BigNumber clone,深克隆对象,返回克隆对象

比较方法int compareTo,与传入大整数进行比较,大1,小-1,相等0

私有方法

整理数组void sort,传入计算后的长度,计算符号并整理数组

代码

public class BigNumber implements Cloneable,Comparable<BigNumber>
{
   
	short[] number = new short[50000];
	int len = 0;
	int sign;
	BigNumber(int num)
	{
   
		if(num < 0)
		{
   
			num = -num;
			this.sign = -1;
		}
		else
		{
   
			this.sign = 1;
		}
		while(num != 0)
		{
   
			this.number[++len] = (short)(num % 10);
			num /= 10;
		}
	}
	
	BigNumber(String num)
	{
   
		this.len = num.length();
		this.sign = 1;
		for(int i = this.len - 1;i > 0;i--)
		{
   
			number[this.len - i] = (short)(num.charAt(i) - '0');
		}
		if(num.charAt(0) == 
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值