簡體   English   中英

什么時候浮點數不是浮點數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM