我正在使用TryStrToFloat将字符串转换为Double变量。一切正常,直到字符串看起来不像“21e”。我得到转换结果21。

在我看来,编译器将21e视为数字21e0。字符串21e1给出结果210。
当我使用Val函数时,转换效果更好。字符串'21e'给出错误,但是现在'21e1'给出210,'21e-1'给出数字2,1,等等。

如何正确进行转换。我应该在文本中检测字母'e'还是任何简单的转换方法?

最佳答案

documentation说:



您的输入不满足条件,因此应视为错误。

您没有这么明确地说,但我认为您声称:

TryStrToFloat('21e', val)

返回True。如果是这样,这是一个错误,应报告给Embarcadero。如果您需要解决此问题,那么我建议您编写自己的函数来检测这种情况并正确处理。

另一方面,如果该函数调用返回False,则该函数的行为与设计相符,而您的错误是要读取val中的值。

更新

我可以确认TryStrToFloat('21e', val)返回True。我在XE7更新1上进行了测试。我向Embarcadero提交了以下错误报告:https://quality.embarcadero.com/browse/RSP-9814

09-25 18:31