2016-04-27 87 views
-3

我的實用程序(docto)的用戶在github上記錄了一個問題,表明他收到錯誤。該錯誤是現在何時浮動不是浮動?

在它的臉上'11 0.0' 在我看來就像一個有效的浮點數,的確是我認爲導致該錯誤是here

if (strtofloat(OfficeAppVersion) < 14) then 

我可以將代碼即使我已經安裝了版本'14.0',也不會重現錯誤。

是否有任何理由說明'11.0'不會被Delphi的strtofloat函數識別爲浮點數。

我最初的想法是在把修剪,看看是否有任何隱藏字符

if (strtofloat(trim(OfficeAppVersion)) < 14) then 

任何想法感激收到。

+4

小數點可能比'」 .''在目標語言環境別的東西。 –

+0

非常感謝你。首先把它作爲答案被接受。 –

+2

當小數點不是一個點時浮點數不是浮點數:)而是區域設置中的逗號例如。 – Abelisto

回答

4

正如其他人所指出的,問題是,機器的默認語言環境使用不同的性格比'.'的小數點分隔符。如果你需要使用'.'字符串轉換,你可以使用StrToFloat()重載版本接受TFormatSettings輸入:

var 
    fmt: TFormatSettings; 
begin 
    fmt := TFormatSettings.Create; // get default settings first 
    fmt.DecimalSeparator := '.'; // customize as needed 
    if (StrToFloat(OfficeAppVersion, fmt) < 14) then 
    ... 
end; 
2

最大的可能是你的用戶區域設置使用逗號作爲decimalseparator