在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