Delphi 验证两位小数 0.005 等于 0

Delphi validate two decimal places 0.005 equals 0

我有一个文本编辑组件和一个按钮组件。如果 textedit 组件的文本值大于 0,按钮组件会将其添加到列表中。在 textedit 组件上,我可以根据需要设置任意多的小数位,但我想验证两位小数。就像如果我将 00.0032 放在 textedit 组件中,验证会将其视为 0。是否有允许我执行此操作的函数,还是我必须通过自己的代码来执行此操作。

这是我的代码

if (Trim(textEdit.Text) <> '') and (StrToCurr(Trim(textEdit.Text)) <> 0) then
begin      
  code to add the value 
end;

看了你的问题,我想到了两种可能的解决方案:

  1. 您可以转换为浮点乘以 100(移动两位小数)并使用 floor 进行舍入:

    (Floor(StrToFloat(Trim(textEdit.Text)) * 100) <> 0)

    这执行到浮点数的转换可能会很慢。

  2. 另一个解决方案可能是使用字符串函数:

    (StrToCurr(Copy(textEdit.Text, 1, Pos('.', textEdit.Text) + 2)) <> 0)

    这会将输入字符串从开头复制到小数点分隔符“.”后的两位数。 如果您的字符串较短(例如“0.1”),请不要担心,您不会收到错误。

哪种解决方案最终更快,必须进行基准测试。

另外请记住,并非在每个地区都有一个“.”。是小数点分隔符。 例如,在欧洲大部分地区,小数点分隔符是“,”,千位分隔符是“.”。 了解 TFormatSettings。

PS:在使用 StrToCurr 之前不需要 Trim,因为它在内部执行 trim。