无限数加法 超出计算机表示范围 溢出 int型
2011-05-19 15:59
246 查看
/**
* 无限数加法 超出计算机表示范围 溢出 int型
* @param src
* @param target
* @return
*/
public String addition(String src,String target)
{
String result="";
char[] tempSrcs=src.toCharArray();
char[] tempTargets=target.toCharArray();
int lenSrc=tempSrcs.length;
int lenTarget=tempTargets.length;
//反转 我喜欢从0开始
char[] srcs=new char[lenSrc];
char[] targets=new char[lenTarget];
for (int i = 0; i < tempSrcs.length; i++) {
srcs[i]=tempSrcs[lenSrc-i-1];
}
for (int i = 0; i < tempTargets.length; i++) {
targets[i]=tempTargets[lenTarget-i-1];
}
//计算
int maxNum=Math.max(lenSrc , lenTarget);
int temp=0;//进位
int tempSrc=0;//临时src变量
int tempTarget=0;//临时target变量
for (int i = 0; i < maxNum; i++) {
tempSrc=i<lenSrc?((int) srcs[i] -(int) '0'):0;//取
tempTarget=i<lenTarget?((int) targets[i] -(int) '0'):0;//取
result=(tempSrc+tempTarget+temp)%10+result;//计算
temp=(tempSrc+tempTarget+temp)/10;//计算进位
}
//是否需要最高位进位
if(temp==1)
{
result="1"+result;
}
return result;
}
public void addition()
{
System.out.println(addition("1111111111111111111111111111111111111111111111111", "999999999999999999999999999999999999999999999999999999999999999999"));
}
* 无限数加法 超出计算机表示范围 溢出 int型
* @param src
* @param target
* @return
*/
public String addition(String src,String target)
{
String result="";
char[] tempSrcs=src.toCharArray();
char[] tempTargets=target.toCharArray();
int lenSrc=tempSrcs.length;
int lenTarget=tempTargets.length;
//反转 我喜欢从0开始
char[] srcs=new char[lenSrc];
char[] targets=new char[lenTarget];
for (int i = 0; i < tempSrcs.length; i++) {
srcs[i]=tempSrcs[lenSrc-i-1];
}
for (int i = 0; i < tempTargets.length; i++) {
targets[i]=tempTargets[lenTarget-i-1];
}
//计算
int maxNum=Math.max(lenSrc , lenTarget);
int temp=0;//进位
int tempSrc=0;//临时src变量
int tempTarget=0;//临时target变量
for (int i = 0; i < maxNum; i++) {
tempSrc=i<lenSrc?((int) srcs[i] -(int) '0'):0;//取
tempTarget=i<lenTarget?((int) targets[i] -(int) '0'):0;//取
result=(tempSrc+tempTarget+temp)%10+result;//计算
temp=(tempSrc+tempTarget+temp)/10;//计算进位
}
//是否需要最高位进位
if(temp==1)
{
result="1"+result;
}
return result;
}
public void addition()
{
System.out.println(addition("1111111111111111111111111111111111111111111111111", "999999999999999999999999999999999999999999999999999999999999999999"));
}
相关文章推荐
- sql server中单引号拼接字符串(书写错误会出现错误"浮点值 XXXX 超出了计算机表示范围(8 个字节)。“XX”附近有语法错误。")
- 编程实现任意长度整数的加法(整数可以长度超出C++中int范围)
- 那天在CSDN上看到一个网友在华为遇到的面试题是一道乘法题看似简其实并不是因为它们都超出了数据类型的范围,今天做了下加法希望对大家有所启示
- 【深入理解计算机系统】【浮点数的表示范围】
- 计算机编码类型以及变量表示范围
- C++ 带符号和无符号char类型赋值超出表示范围的情况
- leetcode_26题——Reverse Integer(int型的表示范围)
- C语言超出类型数值范围的表示方法
- 汇编语言三 设数组ARRAY存储多个8位无符号数据,其中第一个字用于存放数据个数,试编写程序求数组元素之和,将结果存放在AX中,若计算的和超过16位数表示的范围,则给出溢出标志DX=-1,否则D
- 如果我们使用的整数常量超出了 int 的表示范围
- 文字超出范围用...表示
- hdu 5059 判断数字表示方式以及范围合法(int型之内)
- 减法变加法-计算机中的补码表示
- 整数超出范围时如何表示?
- special situation——两个short型变量相加超出short的表示范围
- 超出数据类型范围的数的加法
- 用div控制文字长度,超出范围用...表示
- css 超出用省略号当标题字符溢出用省略号表示
- 使用Css隐藏超出容器宽度的文字,溢出部分用“...”表示
- 减法变加法-计算机中的补码表示