我使用TryStrToFloat
將字符串轉換爲雙精度變量。一切正常,直到字符串看起來不像'21e'。我得到的轉換結果21.TryStrToFloat轉換不正確的字符串
在我看來,編譯器對待'21e'像編號21e0。字符串21e1給出結果210. 當我使用Val函數轉換效果更好。字符串'21e'給出錯誤,但現在'21e1'給出210,'21e-1'給出數字2,1等。
如何正確工作轉換。我應該在文本中檢測字母'e'還是任何簡單的轉換方法?
我使用TryStrToFloat
將字符串轉換爲雙精度變量。一切正常,直到字符串看起來不像'21e'。我得到的轉換結果21.TryStrToFloat轉換不正確的字符串
在我看來,編譯器對待'21e'像編號21e0。字符串21e1給出結果210. 當我使用Val函數轉換效果更好。字符串'21e'給出錯誤,但現在'21e1'給出210,'21e-1'給出數字2,1等。
如何正確工作轉換。我應該在文本中檢測字母'e'還是任何簡單的轉換方法?
使用TryStrToFloat爲一個字符串,S轉換,在浮點值。 S必須包含一個可選符號(+或 - ),一串帶可選小數點的數字和一個可選尾數。尾數由'E'或'e'組成,後跟一個可選符號(+或 - )和一個整數。前導和尾隨空白被忽略。
您的輸入不符合條件,因此應視爲錯誤。
你沒有明說明確的,但我相信,你聲稱:
TryStrToFloat('21e', val)
回報True
。如果是這樣,這是一個錯誤,應該向Embarcadero報告。如果你需要解決這個問題,那麼我建議你編寫自己的函數來檢測這種情況並正確處理它。
另一方面,如果該函數調用返回False
,則該函數的行爲與設計相同,您的錯誤是讀取val
中的值。
更新
我可以證實,TryStrToFloat('21e', val)
回報True
。我測試了XE7更新1.我向Embarcadero提交了以下錯誤報告:https://quality.embarcadero.com/browse/RSP-9814
確實。 'TextToFloat'(由'TryStrToFloat'調用)返回'21e'的'TRUE'。經過XE測試,這是我在這臺機器上最新的。 – JensG 2014-12-07 01:35:49
謝謝@JensG,我想你可以告訴我我無法驗證這個問題。 – 2014-12-07 08:24:22