如果我不知道是否有浮点数或整数,如何在将字符串转换为数字时避免错误?

时间:2012-08-30 10:10:32

标签: delphi

我在delphi表单上有stringgrid,我试图将一个单元格的值除以另一列中另一个单元格的值。

但问题是,stringgrid单元格填充了不同类型的数字,所以我得到ConvertErrors。 例如,单元格中的数字可能看起来像 0.37或34或0.0013或0.00或0.35或30.65或45.9108或0.0307或6854.93。

换句话说,我永远不会知道它们是真实的,浮点数,整数还是那些单元格中的任何其他类型。

我在互联网上到处寻找但没有运气。任何想法的人。顺便说一句,我不是德尔福专家。感谢。

3 个答案:

答案 0 :(得分:3)

对于每个字符串,使用StrToFloat中的SysUtils.pas函数将其首先转换为浮点值。这应该允许处理任何数字类型(除非你有一些不寻常的复杂数字)。由于您上面的列表中有一些零值,您还应该确保检查除零条件,因为这也可能引发异常。

答案 1 :(得分:3)

为此,SysUtils有许多功能,例如TryStrToFloat, TryStrToInt, TryStrToInt64等。这些函数接受引用参数(var参数)以返回转换后的值,如果转换成功,函数本身返回true。

如果您确定该字符串具有有效数字,那么您可以在决定使用哪个函数之前检查输入字符串以查看它是否有小数点。

答案 2 :(得分:2)

将所有数字视为浮点数。使用StrToFloat,除以数字,然后将结果转换回FloatToStr字符串。如果结果是整数,则不会产生小数点。