package chow.test;
/**
* @author Chow
* @date Jun 7, 2010
* @Description 大整数的加法,减法,乘法,除法
*/
public class BigNumOperation {
private static String result;
//加法,从低位加起,逢十进一
public static String add(String firstNum, String secondNum){
result = "";
int maxLength = firstNum.length() >= secondNum.length() ? firstNum.length() : secondNum.length();
int index = maxLength - 1;
int carry = 0;
while(firstNum.length() < maxLength){
firstNum = "0" + firstNum;
}
while(secondNum.length() < maxLength){
secondNum = "0" + secondNum;
}
while(index >= 0){
int firstInt = Integer.valueOf(firstNum.substring(index, index + 1));
int secondInt = Integer.valueOf(secondNum.substring(index, index + 1));
result += (firstInt + secondInt + carry) % 10;
carry = (firstInt + secondInt + carry) / 10;
index--;
}
if(carry != 0){
result += carry;
}
return revert(result);
}
//减法,分三种情况:1.两者相等,返回0,2:大数减小数,小数补0,逐位减,借位;3:小数减大数,转化为2,加-号
public static String minus(String firstNum, String secondNum){
result = "";
String sign = "";
if(firstNum.equals(secondNum)){
return "0";
}
//小数-大数,交换firstNum与secondNum,并符号置为-
if(firstNum.length() < secondNum.length()
|| (firstNum.length() == secondNum.length() && firstNum.compareTo(secondNum) < 0)){
sign = "-";
String tmp = firstNum;
firstNum = secondNum;
secondNum = tmp;
}
//若小数(secondNum)不足位,高位补0
while(secondNum.length() < firstNum.length()){
secondNum = "0" + secondNum;
}
//大数从低位开始,逐位减小数
int index = firstNum.length() - 1;
int borrow = 0; //记录借位
while(index >= 0){
int left = firstNum.charAt(index) - secondNum.charAt(index) + borrow;
if(left < 0){
borrow = -1;
left += 10;
}
result = left + result;
index--;
}
//去除多余的前导0
while(result.indexOf("0") == 0){
result = result.substring(1);
}
return sign + result;
}
//反转字符串
public static String revert(String string){
char[] charArray = new char[string.length()];
for(int i = 0; i < string.length(); i++){
charArray[i] = string.charAt(string.length() - 1 - i);
}
return new String(charArray);
}
public static void main(String[] args){
System.out.println(BigNumOperation.add("4561427489456123", "798754564567343"));
System.out.println(BigNumOperation.minus("5345435435", "543543543543"));
}
}
分享到:
相关推荐
以上就是大整数加减乘除运算的基本原理和实现方法,实际应用中还需结合特定的编程语言和库,例如Python的`decimal`模块、Java的`BigInteger`类等,它们提供了封装好的大整数操作接口,方便开发者使用。
本篇将详细介绍如何使用Java进行大数的加、减、乘、除以及开方运算。 首先,`BigInteger`类是Java标准库中专门用来处理任意精度整数的类,它可以存储和操作比`long`类型更大的数值。这个类提供了丰富的算术方法,...
本文将基于提供的代码片段详细介绍如何用Java实现一个简单的计算器,该计算器具备基本的数学运算功能:加、减、乘、除。此外,还将介绍相关的UI设计和事件处理机制。 #### 一、项目概述 该Java计算器程序能够实现...
此外,对于除法,如果被除数为0,该类可以报错。对于加、减、乘、除之外的运算符,该类应该告知无法处理。 (2)编写一个包含主方法main的公共类(访问权限为public的类),主方法main中完成的任务是:从键盘上输入...
Java语言通过内置的`BigInteger`类提供了解决方案,但本文档介绍的是一个自定义实现的Java程序,用于执行大整数的加、减、乘、除以及求最大公约数(GCD)和最小公倍数(LCM)的操作,而不会出现溢出问题。...
- 需要编写四个函数,分别对应加法、减法、乘法和除法。这些函数接收两个浮点数作为参数,执行运算后返回结果。 通过以上步骤,我们可以创建一个基础的计算器应用程序,具备基本的数学运算功能。为了使程序更加...
Java 语言程序设计课程设计报告中,设计了一款计算器,使其具有加减乘除取余等基础数学运算功能。该计算器的设计思想基于面向对象编程的原则,使用 Java 语言作为开发平台。 设计思想 在设计计算器时,首先需要...
这个题目中的“能完成正整数加减乘除的简易计算器”是一个基础的Java应用,它实现了基本的数学运算功能,包括加法(+)、减法(-)、乘法(*)和除法(/)。这个计算器可能包含了一个用户界面,允许用户输入两个正...
在这个“java加减乘除计算器界面编程”项目中,我们需要实现一个简单的计算器应用,具备加、减、乘、除四种基本运算功能,并且能够处理用户输入非数字字符时的异常。 首先,我们看到程序使用了`javax.swing`包来...
本项目实现了一个大数加减乘的类,结合链表数据结构来存储和处理这些大数。 首先,我们来讨论大数的基本概念。在计算机中,常规的数据类型如int、long等都有其最大值和最小值限制,例如在Java中,int的最大值为2^31...
本文将深入解析如何在Java中定义一个能够对任意两个整数执行加、减、乘、除运算的类,并展示如何设置私有成员变量以及调用这些运算方法来显示结果。 ### 类的设计与实现 #### 定义类:`Number` 首先,我们创建了一...
为了实现不同的计算功能,如加、减、乘、除,需要使用条件判断语句,如`if...else`或`switch`,来根据用户选择的操作执行相应的代码块。 6. **循环(Loops)**: 如果计算器还支持连续运算,可能会用到循环结构,...
在本例中,我们将探讨如何通过设计一个接口来实现两数之间的加、减、乘、除操作。 首先,我们创建一个名为`Calculator`的接口,该接口定义了四个方法:`add()`, `subtract()`, `multiply()`, 和 `divide()`,分别...
在计算机科学中,高精度计算是指处理非常大的数值,这些数值超过了...虽然乘除法的实现更复杂,但基本思路相同,都是基于位操作和适当的算法。对于需要高精度计算的应用,理解并掌握这些基本原理和技巧是至关重要的。
在Java中,`java.math.BigInteger`类已经提供了大整数的支持,包括加减乘除等操作。但是,如果我们要从头开始实现一个大整数类,可以考虑以下方法: 1. 数据表示:大整数通常用数组或链表来存储,其中每个元素代表...
在标题和描述中提到的问题,即"当数值超过long位时的加减乘算法,表达式自动运算",主要涉及了大整数运算的处理方法。 首先,我们需要理解`long`类型的局限性。在Java中,`long`类型占用64位,可以表示的整数范围是...
- 对于运算符按钮,如加、减、乘、除,记录操作类型并准备进行计算。 - 清除按钮(`clear`)用于清空输入框的内容。 - 点击等号按钮时执行实际的计算操作,并将结果显示在`textField`中。 5. **特殊处理** - 针对...
该程序旨在通过图形用户界面(GUI)实现整数的基本四则运算(加、减、乘、除)。根据描述,程序应该能够提供一个直观且易于使用的界面,使用户可以方便地进行计算。 #### 二、关键技术点 ##### 2.1 GUI设计与实现 ...
这个程序将具有菜单功能,并能够执行基本的加、减、乘、除运算。我们将使用Java Swing库来构建界面,并通过事件处理机制实现计算器的功能。 首先,我们需要导入必要的包,包括`javax.swing`和`java.awt`,这些包...
这个游戏的目标是通过加、减、乘、除四种基本运算,使得四个给定的1到13之间的数字组合的结果恰好等于24。程序的亮点在于它能够自动计算所有可能的运算组合,并过滤掉重复的结果,同时统计出满足条件的不同解的数量...