Loose-Info.com

Last Update 2019/12/24


TOP - C言語 - stdlib.h - strtod()

引数で指定される文字列の最初の数値表記部分をdouble型に変換します。
「0x」または「0X」で始まる場合は16進数として変換されます。
「e」、「E」で始まる部分は10進数の指数部分として変換されます。
また、「p」、「P」で始まる部分は10進数の指数部分として変換されます。

 戻り値1  = strtod(  引数1  ,  引数2  )

戻り値1 :
double
引数1の最初の数値表記部分を変換した値
変換が実行されない場合は0
引数1 :
char *
変換対象となる文字列へのポインタ
引数2 :
char **
変換された部分の次の文字へのポインタへの参照

(例)
#include <stdio.h> #include <stdlib.h> int main() { char *pc; printf("変換結果(strtod) : %f\n", strtod("123", (char **)NULL)); printf("変換結果(strtod) : %f\n", strtod("123.5", (char **)NULL)); printf("変換結果(strtod) : %f\n", strtod("0xa00", (char **)NULL)); printf("変換結果(strtod) : %f\n\n", strtod("-345.6", (char **)NULL)); printf("変換結果(strtod) : %f\n", strtod("123.5abc", &pc)); printf("変換後の次の文字 : %s\n\n", pc); printf("変換結果(strtod) : %f\n", strtod("abc123.5", &pc)); printf("変換後の次の文字 : %s\n\n", pc); printf("変換結果(strtod) : %f\n", strtod("1.2e+5abc", &pc)); printf("変換後の次の文字 : %s\n\n", pc); return 0; }

実行結果
変換結果(strtod) : 123.000000 変換結果(strtod) : 123.500000 変換結果(strtod) : 2560.000000 変換結果(strtod) : -345.600000 変換結果(strtod) : 123.500000 変換後の次の文字 : abc 変換結果(strtod) : 0.000000 変換後の次の文字 : abc123.5 変換結果(strtod) : 120000.000000 変換後の次の文字 : abc 変換結果(strtod) : 20.000000 変換後の次の文字 : abc