我正在使用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