toj*_*100 5 delphi string type-conversion
我正在使用TryStrToFloat将字符串转换为Double变量.一切正常,直到字符串看起来不像'21e'.我得到转换结果21.
在我看来,编译器将'21e'视为数字21e0.字符串21e1给出结果210.当我使用Val函数转换效果更好.字符串'21e'给出错误,但现在'21e1'给出210,'21e-1'给出数字2,1等.
如何正确地进行转换.我应该在文本中检测到字母'e',还是任何简单的转换方式?
该文件说:
使用TryStrToFloat将字符串S转换为浮点值.S必须包含一个可选符号(+或 - ),一个带有可选小数点的数字字符串和一个可选的尾数.尾数由'E'或'e'组成,后跟可选符号(+或 - )和整数.前导空格和尾随空格被忽略.
您的输入不满足条件,因此应视为错误.
你没有这么明确地说,但我认为你声称:
TryStrToFloat('21e', val)
Run Code Online (Sandbox Code Playgroud)
回报True.如果是这样,这是一个错误,应该报告给Embarcadero.如果你需要解决这个问题,那么我建议你编写自己的函数来检测这种情况并正确处理它.
另一方面,如果该函数调用返回,False则函数的行为与设计相同,而您的错误是读取值val.
更新
我可以确认TryStrToFloat('21e', val)退货True.我在XE7更新1上测试过.我向Embarcadero提交了以下错误报告:https://quality.embarcadero.com/browse/RSP-9814