字串轉化數字演算法(C )

2021-04-21 11:19:55 字數 1195 閱讀 3841

/// 自定義數字解析函式

/// 說明:如果輸入的字串為空或非數字開頭則返回0,否則返回解析結果

/// 輸入的字串

///

解析後的結果

static double coustomnumber(string str)

if (string.isnullorempty(str)) return 0d;//如果輸入的字串為空或null,則直接返回0

if (!char.isdigit(str[0])) return 0d;//如果輸入的字串是非數字開頭,直接返回0

string subv = string.empty;

for (int i = 0; i < str.length; i++)

if (char.isdigit(str[i]) || str[i].equals('.') && !subv.contains("."))//從左至右,

//判斷字串的每位字元是否是數字或小數點,小數點只保留第乙個

subv += str[i];

subv.trimend(new char );// 如果解析後的子字串的末位是小數點,則去掉它

string strright = string.empty;

double strreturn =0d;

if (subv.contains("."))// 如果解析結果包含小數點,則根據小數點分兩段求值

strright = subv.substring(subv.indexof('.')+1);//小數點右側部分

subv = subv.substring(0,subv.indexof('.'));//小數點左側部分

for (int i = 0; i < strright.length; i++)//計算小數點右側的部分

strreturn += ((int)strright[i] - 48) / math.pow(10, i + 1);//(int)strright[i] 是取該字元的ascii碼

for (int i = 0; i < subv.length; i++)//計算小數點左側的部分

int t = ((int)subv[i] - 48);

strreturn += t * math.pow(10, subv.length - i - 1);//按位乘以10的冪,並和小數點右側結果相加

return strreturn;

字串轉化為數字

如何把entry中輸入的字串轉化為對應的數字 例如,如果輸入為s 0 12 3 40 怎麼把它轉化為對應的數字呢?根據需要,胡亂寫了 記錄在此。功能 把字串轉化為數字列表 輸入s 字串 輸出 數字列表 def strtonum s s 0 12 3 40 p 用來存放字串中的數字 0,1,2,3,4...

C語言 字串轉化為數字

int atoi const char str convert string to integer 忽略str前方的空白,直到遇到第乙個非空白字元,如果第乙個非空白字元是正負號或者數字,則轉換盡可能長的有效字元為數字。如果沒有合法的轉換返回0,如果轉換後的值超過int表示範圍,int max or ...

C 語法之字串與數字轉化

採用最原始的string,然後按照十進位制的特點進行算術運算得到int,但是這種方式太麻煩,這裡不介紹了。採用標準庫中atoi函式。string s 12 int a atoi s.c str 對於其他型別也都有相應的標準庫函式,比如浮點型atof long型atol 等等。採用sstream標頭檔...