当前位置:编程学习 > C#/ASP.NET >>

在vs中30多位的数相加用什么数据类型

我在vs中设计了一个了加法器,需要算上亿的数相加,但是double/类型不行,float出错。希望个位大虾帮帮忙 
--------------------编程问答-------------------- 把数字变成字符串

然后自己实现小学里面的加法,从个位加到最低位。 --------------------编程问答-------------------- 这两种类型报什么错误?!
还有你的具易做图数是几位?
±1.5 × 10^-45 到 ±3.4 × 10^38这是floa的大致范围
±5.0 × 10^−324 to ±1.7 × 10^308这是double的大致范围..应该能符合你的要求...
是不是你对精度要求过高?! --------------------编程问答-------------------- 亿有9个十进制位

那么32位整型刚好符合要求
如果要求还要高一些就需要用64位整型,其有18个十进制位,可以算亿亿 --------------------编程问答-------------------- 思路将两个字符串前面补0,以长度长的为基础,然后将对应位相加就可以了
using System;
using System.Text;

class test1
{
static void Main(String[]args){
String a="295999889838833837434832474387432873428324834267432764327634764376434";
String b="12";

Console.WriteLine("{0}+{1}={2}",a,b,Sum(a,b));
}


//两数字计算
static String Sum(String a,String b){
int max=a.Length>b.Length?a.Length:b.Length;

a=a.PadLeft(max,'0');
b=b.PadLeft(max,'0');

String newStr=""; //新字符串

int num=0;//前一位
for(int i=max-1;i>=0;i--){
int a1=Convert.ToInt32(a[i].ToString()); //取数字A
int b1=Convert.ToInt32(b[i].ToString()); //取数字B
int c1=a1+b1+num;
if(i>0){
if(c1>=10){
c1=c1-10;
num=1; //下一位进1
}else{
num=0;
}

}
newStr=c1+newStr;
}

return newStr;
}
} --------------------编程问答--------------------

using System;
using System.Text;

class test1
{
static void Main(String[]args){
String a="295999889838833837434832474387432873428324834267432764327634764376434";
String b="12";

Console.WriteLine("{0}+{1}={2}",a,b,Sum(a,b));
}


//两数字计算
static String Sum(String a,String b){
int max=a.Length>b.Length?a.Length:b.Length;

a=a.PadLeft(max,'0');
b=b.PadLeft(max,'0');

String newStr=""; //新字符串

int num=0;//前一位
for(int i=max-1;i>=0;i--){
int a1=Convert.ToInt32(a[i].ToString()); //取数字A
int b1=Convert.ToInt32(b[i].ToString()); //取数字B
int c1=a1+b1+num;
if(i>0){
if(c1>=10){
c1=c1-10;
num=1; //下一位进1
}else{
num=0;
}

}
newStr=c1+newStr;
}

return newStr;
}
}
补充:.NET技术 ,  .NET Framework
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,