- 398 名前:デフォルトの名無しさん [2007/11/16(金) 16:49:36 ]
- 文字列を倍精度に変換する関数strtodにバグがあるようでうまく変換してくれません。
const char* pszInput = "9999999999999999999999999999999999999999999999999999999999999999999999999999999999"; char* pszStop; double dOutput; dOutput = ::strtod(pszInput, &pszStop); ::printf("input:%s\noutput:%f\nstop:%s\n", pszInput, dOutput, pszStop); output:9999999999999999600000000000000000000000000000000000000000000000000000000 000000000.000000 となってしまいます。ERANGEも検出されません。 これはよく知られたバグなのでしょうか?また対策はあるのでしょうか? よろしくお願いします。
|

|