我想在C中編寫一個解析器,它的一部分工作是將一系列字符轉換爲double。到目前爲止,我一直在使用strtod,但我發現它非常危險,它不會處理數字位於緩衝區末尾的情況,該緩衝區不是以null結尾。編寫我自己的float解析器
我想我會寫我自己的。如果我有一個ab形式的數字的字符串表示,我會不會認爲我可以計算(雙)a +((double)b /(double)10^n),其中n是數字在B?
例如,23.4563:
一個= 23 B = 4563
最終答案:23 +(10000分之4563)
還是會產生相對於IEEE格式不準確的結果的花車?
其一,如果'B'是一個整數類型,'b/10^N'會被轉換爲之前得到四捨五入'float'。你想把劇本放在圓括號裏面。另外,你需要確保'a'或'b'中沒有整數溢出。 – Shahbaz 2013-03-21 17:44:48
對不起,是的,你是對的 - 我的錯字。我會編輯它。 – Cthutu 2013-03-21 17:55:50
更多思考:負數,指數格式'1.2E10'。負指數,...我真的*建議你只複製到一個空終止緩衝區,讓strtod完成繁重的工作。 – Roddy 2013-03-21 17:58:14