德尔福验证两个小数位0.005等于0

时间:2016-07-18 18:58:19

标签: delphi currency

我有一个textedit组件和一个按钮组件。如果该值大于0,则按钮组件将textedit组件文本值添加到列表中。在textedit组件上,我可以根据需要添加多个小数位,但我想验证两个小数位。就像我将00.0032放在textedit组件中一样,验证将其作为0。是否有一个允许我这样做的功能,或者我必须通过自己的代码执行此操作。

这是我的代码

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

1 个答案:

答案 0 :(得分:1)

阅读你的问题我想到了两个可能的解决方案:

  1. 你可以转换为浮点乘以100(换算两位小数)并使用地板舍入:

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

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

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

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

    这会将输入字符串从小数点分隔符的开头复制到两位数。&#39;。 不要担心你的字符串是否更短(例如&#39; 0.1&#39;)你不会得到错误。

  3. 最终快速的解决方案必须进行基准测试。

    另外请记住,并非每个地区都有&#39;。&#39;是小数点分隔符。 在欧洲大部分地区,例如小数点分隔符是&#39;,&#39;并且有数千个分隔符。&#39;。 了解有关TFormatSettings的信息。

    PS:在使用StrToCurr之前你不需要修剪,因为它在内部修剪。