文字列を数値に変える関数
久しぶりにC言語を書いてみた.
文字列を数値に変える関数
仕様
関数名:string2double
引 数:char*
返り値:double
浮動小数点、正負の文字列に対応
#include<stdio.h> #include<math.h> #include<string.h> double string2double(char*); int main (void) { char *str = "-1234.567"; double v = string2double(str); printf("%lf\n", v); return 0; } double string2double(char* str) { int len = strlen(str); int begin = 0; int flag = 1; double val = 0.0; double weight = 1.0; if (str[0] == '-') { begin = 1; flag *= -1; } for (int i=len-1; i>=begin; i--) { if (str[i] == '.') { weight /= pow(10, (len - 1 - i)); } } for (int i=len-1; i>=begin; i--) { if (str[i] == '.') continue; val += weight * (double)(str[i] - '0'); weight *= 10.0; } return flag * val; }
$ gcc string2double.c -o string2double -lm $ ./string2double -1234.567000