百度
360搜索
搜狗搜索

字符串转数字算法,求指点——-下面程序的功能是将一个整数字符串转换为一个整数,如”-1234”转换为-1234,程序思路不是很懂详细介绍

本文目录一览: 如何将文本转化为数值

对于纯数字组成的字符串,转换成相应数值的一般利用标准函数。
举例说明正整数算法:
申请工作变量,赋初值为0
循环:当前字符为0值时结束
--取当前位,转换成相应数字:当前字符减去字符0可得到
--工作变量自乘以10
--工作变量加上边求取的数字
--将字符串下一字符当成当前字符,继续循环
循环结束后,工作变量为字符串表示的整数数值。
分别对C3:C7、D3:D7求和,虽然两个单元格区域的数据看上去一样,但求和结果却不相同。方法一、错误检查功能,如果单元格左上角显示绿色三角符号,该符号为“错误检查”功能的标识符,提醒用户单元格中可能存在错误。选中B3:B7单元格,会在单元格一侧出现错误检查选项按钮,单击按钮右侧的下拉箭头会显示选项菜单,选择【转换为数字】,就可以将文本型数据转为数值型。

将0、1字符串表示的二进制数转换成对应的十进制数,大家帮我看看这是什么算法

这有什么算法,
就是把二进制字符串转成整数,
while(*p!='\0')
{
y=y*2+*p-'0';
p++ ;
}
*p-'0'; 就是把一位二进制字符, 转成数字,
也就是: '0'转成0, '1' 转成 1
y=y*2+ ___
就是每多一位, 就乘以2, 因为是2进制

如何把字符串1234567890123456789012345678901234567890转化成2进制数

提供个思路和算法,请自己动手实现,这样对你有好处:
1、将字符串转成整数数组储存(假设Source),共40个元素(Source[0] 到 Source[39]),每个元素中保存1位;再定义1个数组用来保存转化后的二进制数(假设为Result);
2、转化2进制的算法:开始,判断:
2.1 如果数组Source末位元素 Source[39] , 如果为偶数,则输出1位二进制数为 0 ,如果为奇数,则输出1位 二进制数 1;
2.2 从 Source 数组 首元素开始依次往后,除以2并将结果仍保存在Source数组,注意可能存在借位的情况(比如第一次循环 Source[0]=1,Source[1]=2 ,则除以2以后结果为 Source[0]=0,Source[1]= 6;)
2.3 循环2.1、2.3 直到Source 数组所有的元素变成0;
3、将步骤2中输出的二进制数逆序输出,即可得到转化后的二进制数。
这个位数有点长
1234567890123456789012345678901234567890
稍微短一点可以用电脑上的计算器
【查看】【科学形】:
用什么语言,C还是JAVA,

字符串小数转数字小数算法。比如 “12.12”变成12.12

字符串转整数函数:
置当前字符索引为0,之前数为0
当前字符减字符0得到当前数
当前索引等于字符串长度减一循环结束
之前数=之前数乘10加当前数
以小数点为分隔符分割字符串
分别把两串字符串化整数
小数部分除以10的小数字符串长度减一的次方
两个数想加即可
具体的鲁棒性你可以自己添加写东西

魔兽jass里字符串和整数相互转换的具体算法

取"A","0","N","S"的ascii码,就是41304E53
然后转换为
10进制
是1093684819
算法的话也很简单
sum
=
hex("A")*16^8
+
hex("O")*16^4
+
hex("N")*16^2
+
hex("S")*16^0;
//hex()为
进制转换
的函数
hex(
int
n){
int
i=0,p,sum=0;
while(n>0){
p
=
(n%10)
*
power(16,i);
n
=
n/10;
sum
+=
p;
i++;
}
return
sum;
}
//power()是计算次方的函数,就不浪费时间了

求指点——-下面程序的功能是将一个整数字符串转换为一个整数,如”-1234”转换为-1234,程序思路不是很懂

第一处填*p也可以,都是判断p是否指向结尾
这个算法是比较麻烦的。搞的挺复杂。
main(){char s[6]; int n; gets(s); if(*s==’-’) n=-chnum(s+1); else n=chnum(s);//这个判断就是判断符号的。 没什么难的。 chnum函数, 只转换不算符号的部分。 printf(“%d\n”,n);}chnum(char *p){ int num=0,k,len,j; len=strlen(p); for( ;____________ ; p++ ) //循环是遍历整个数组, 正常应该是一个常数和len比较。 但是在循环里面len是变化的, 所以只要判断len就可以了。 所以填len!=0 { k=______________;//从下面看, k是累加到num上的。 还有一个循环是k=k*10. 所以 这里最终得到的k值,就是对应位上代表的实际值。 于是初始值为该位实际数字值。 填 *p-'0' j=--len;//j=--len,这样j就是当前p所在的位数,也就是个位j=0 十位j=1 百位j=2... while( _________ ) {k=k*10;}//根据j 也就是p指向的位置, 决定k乘几次10. 填j-- num=num+k;} return num;//这里少了一个返回。 }这个算法太麻烦了, 看看就好 没必要深究。
实际上这种运算, 常用的方法是这样的。
main(){char s[6]; int n; gets(s); if(*s==’-’) n=-chnum(s+1); else n=chnum(s); printf(“%d\n”,n);}chnum(char *p){ int num=0,k,len,j; len=strlen(p); for( j=0 ;j=len; j++ ) { num*=10; num+=p[j]-'0';//两句就可以搞定的 //再简化一下, 一句都可以 num=num*10+p[j]-'0'; 效果一样。 } return num;}

如何将16进制字符串转化成10进制输出

算法:
用变量a存放转换结果,赋初值为0
逐一取得字符串每个字符:从头一直取字符,直到遇到0为止
每取得一个字符:
-变量a自乘16
-判断字符是否数字字符,如果是数字字符则直接转换成数值
-否则,判断字符是否小写字母a~f,如果是转成10~15数值
-否则,判断字符是否大写字母a~f,如果是转成10~15数值
-将以上得到的数值加到变量a上,然后进行下一个字符的处理
例程:
#include

int h2d(char *s) { int a=0; while ( *s ) { a*=16; if ( *s>='0' && *s<='9' ) a+=*s-'0'; else if ( *s>='a' && *s<='f' ) a+=*s-'a'+10; else if ( *s>='A' && *s<='F' ) a+=*s-'A'+10; s++; } return a;}void main() { char s[256]; int x; scanf("%s",s); x=h2d(s); printf("%d\n",x);}

求一算法:在C#中怎么将数字字符串转换为数字?

//将字符串转换为数值
public static string StringToNumerical(stringstrOld)
{
string revalue="";
bool HadPoint=false;
for(int i=0;i
<strold.length;i++)
{

if((char)strOld[i]>='0' && (char)strOld[i]<='9')

{

reValue+=strOld[i].ToString();

}

else

{

if((char)strOld[i]=='.' && !HadPoint)

{

reValue+=".";

HadPoint=true;

}

else

{

break;

}

}

}

//当数值字符串为空时则默认为0

if(reValue=="")

{

reValue="0";

}

阅读更多 >>>  php判断一个字符串包含另一个字符串

//消除数值前面的0,如00123应该为123

for(i=0;i
<revalue.length;i++)
{

if(reValue[i].ToString()=="0")

{

reValue=reValue.SubString(1,reValue.Length-1);

}

}

//最后一位是"."则去掉"."

if(reValue.EndWith('.'))

{

revalue=reValue.SubString(0,CreValue.Length-1);

}

//第一位是"."则在数值字符串前加0

if(reValue.BeginWith('.'))

{

reValue="0"+reValue;

}

return reValue;

}

写个思路吧:

首先检查字符串中是否有数字和小数点之外的字符,然后使用decimal.Parse(yourString)即可

例如:

try

{

decimal num=decimal.Parse(this.textBox1.Text);

this.textBox2.Text=num.ToString();

}

catch

{

MessageBox.Show("输入的字符串中含有非法字符");

}

我靠,数字还字符串 那不和数字一样啊!

public double GetNumber(string str)

{

Regex reg = new Regex("(?

[0-9]*\.?[0-9]*)");

Match m = reg.Match(str);

double aa =Convert.ToDouble( m.groups["gg"]);

return aa;

}

用正则式吧,这个比较好,没有BUg的。建议用这个。如果你说不用Convert那么我们就返回字符串得了

public string GetNumber(string str)

{

Regex reg = new Regex("(?

[0-9]*\.?[0-9]*)");

Match m = reg.Match(str);

string aa =m.groups["gg"];

return aa;

}

正确答案如下:

public string GetNumber(string input)

{

Match m = Regex.Match(input, "(?:\\d*(\\.\\d*)?)");

return m.Value;

}

上面的代码经过了测试,可以正常工作

string s = GetNumber("123asdf");

string a = GetNumber("123.45sadf");

string e = GetNumber("123.sadf");

楼上的有才!

我的办法:

double x=123.21;

整体转换:

string y=Convert.ToString(x);

单个转换用y.split

奖励分的话可以帮写详细代码,要一点时间

///

</revalue.length;i++)
</strold.length;i++)

/// 自定义数字解析函数
/// 作者:三角猫
/// 说明:如果输入的字符串为空或非数字开头则返回0,否则返回解析结果
///

///
输入的字符串

///

解析后的结果

static double CustomNumericParse(string v)

{

if (string.IsNullOrEmpty(v)) return 0d; //如果输入的字符串为空或NULL,则直接返回0

if (!char.IsDigit(v[0])) return 0d; //如果输入的字符串是非数字开头,直接返回0

string subV = string.Empty;

for (int i = 0; i < v.Length; i++)

{

if (char.IsDigit(v[i]) || (v[i].Equals('.') && !subV.Contains("."))) //从左至右,判断字符串的每位字符是否是数字或小数点,小数点只保留第一个

subV += v[i];

else

break;

}

subV.TrimEnd(new char[] { '.' }); // 如果解析后的子字符串的末位是小数点,则去掉它

double returnV = 0d;

if (subV.Contains(".")) // 如果解析结果包含小数点,则根据小数点分两段求值

{

string strPointRight = subV.Substring(subV.IndexOf('.') + 1); //小数点右侧部分

subV = subV.Substring(0, subV.IndexOf('.')); //小数点左侧部分

//计算小数点右侧的部分

for (int i = 0; i < strPointRight.Length; i++)

{

returnV += ((int)strPointRight[i] - 48) / Math.Pow(10, i+1); //(int)strPointRight[i] 是取该字符的ASCII码

}

}

//计算小数点左侧的部分

int iLen = subV.Length; //小数点左侧部分的长度

for (int i = 0; i < iLen; i++)

{

returnV += ((int)subV[i] - 48) * Math.Pow(10, iLen - 1 - i); //按位乘以10的幂,并和小数点右侧结果相加

}

return returnV;

}

//使用方法

string a = "123.98adfd"; Console.Write(CustomNumericParse(a));
输入一个八进制数字字符串,将其转换成十进制数后输出。C语言

int main()
{
char str[1024] = {0};
int i;
int result = 0;
gets(str);
for(i = 0; i < strlen(str); i ++)
{
if(str[i] > '7' || str[i] < '0')
{
printf("invalid char found\n");
return -1;
}
result *= 8;
result += str[i] - '0';
}
printf("result is %d\n", result);
}
输入一个八进制数字字符串,将其转换成十进制数后输出的C语言代码示例如下:
#include

void main(){ int i=0,n=0; char a[20];//一般20就够用了

printf("请输入一个八进制数:\n");

gets(a); while(a[i]!='\0'){

n=n*8+a[i]-'0';//核心算法

i++;

} printf("转换为十进制数为:%d\n",n);

}

以下是 C 语言代码示例:

```c

#include

阅读更多 >>>  excel如何快速定位到单元格?

#include

int main() {

char octal[20];

int decimal = 0, i, len;

printf("请输入一个八进制数字:");

scanf("%s", octal);

len = strlen(octal);

for (i = 0; i < len; i++) {

decimal += (octal[i] - '0') * pow(8, len-i-1);

}

printf("转换为十进制数为:%d\n", decimal);

return 0;

}

```

该代码中,首先使用 `scanf` 函数读入一个字符串。由于输入的是一个八进制数字字符串,因此可以直接使用字符数组存储。

然后,使用循环遍历该字符串的每一位数字,并将其转换为十进制数。在计算过程中,将每一位数字乘以 8 的相应次幂,然后依次加起来即可。

最后,使用 `printf` 函数输出转换后的十进制数。运行程序后,输入一个八进制数字字符串,例如 123,然后输出的结果为:

```

转换为十进制数为:83

```

因此,输入的八进制数字 123 转换为十进制数为 83。

网站数据信息

"字符串转数字算法,求指点——-下面程序的功能是将一个整数字符串转换为一个整数,如”-1234”转换为-1234,程序思路不是很懂"浏览人数已经达到23次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:字符串转数字算法,求指点——-下面程序的功能是将一个整数字符串转换为一个整数,如”-1234”转换为-1234,程序思路不是很懂的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!