Float何时不是浮点数?

时间:2016-04-27 19:27:48

标签: delphi type-conversion docto

我的实用程序(docs page 489)的用户在github上记录了一个错误。错误是

  

错误:EConvertError' 11.0'不是有效的浮点值

现在面对它' 11.0'看起来像一个有效的浮点数,实际上我假设导致错误的代码是docto

if (strtofloat(OfficeAppVersion) < 14) then

即使我有版本&#39; 14.0&#39;我也无法重现错误。安装的单词。

是否有任何理由&#39; 11.0&#39;不会被Delphi的strtofloat函数识别为浮点数。

我最初的想法是修剪一下,看是否有隐藏的字符

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

任何想法都感激不尽。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:2)

您的用户区域设置最有可能使用逗号作为decimalseparator