2016-04-27 108 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