[英]When is a Float not a float?
我的實用程序 ( docto ) 的用戶在 github 上記錄了一個問題,他收到了一個錯誤。 錯誤是
錯誤:EConvertError '11.0' 不是有效的浮點值
現在從表面上看,“11.0”在我看來就像一個有效的浮點數,實際上我認為導致錯誤的代碼在這里
if (strtofloat(OfficeAppVersion) < 14) then
即使我安裝了 word 的“14.0”版本,我也無法重現該錯誤。
Delphi 的strtofloat
函數不會將“ strtofloat
識別為浮點數有什么原因。
我最初的想法是進行修剪以查看是否有任何隱藏字符
if (strtofloat(trim(OfficeAppVersion)) < 14) then
感激地收到任何想法。
正如其他人所說,問題在於機器的默認語言環境使用與'.'
不同的字符'.'
為小數點分隔符。 如果您需要轉換使用'.'
的字符串 ,您可以使用接受TFormatSettings
作為輸入的StrToFloat()
的重載版本:
var
fmt: TFormatSettings;
begin
fmt := TFormatSettings.Create; // get default settings first
fmt.DecimalSeparator := '.'; // customize as needed
if (StrToFloat(OfficeAppVersion, fmt) < 14) then
...
end;
很可能您的用戶語言環境使用逗號作為小數分隔符
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.