无法将科学记数法值转换为decmial

use*_*825 1 delphi delphi-2007

我跟着Delphi Basic的一个例子.我复制了它,能够在我的Delphi 2007中运行得很好.

所以我构建了自己的程序并使用了上面提到的这种方法但是遇到了错误.错误声明"...引发异常类EConvertError with message"9.702827253E + 003'不是有效的浮点值".

抓我的头......

var
readResult2:WideString;
strSN:String;
strSN2:String;
floatSN:Extended;
Run Code Online (Sandbox Code Playgroud)

何时readResult2被读作'+ 9.702827253E + 003'#$ A,如手表所示,

strSN := readResult2;  
Delete(strSN,1,1);   
floatSN := StrToFloat(strSN);  //This line created an error
freqSformat.Text := FloatToStr(floatSN);
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?我还是难过......

Dav*_*nan 5

问题是尾随#$A字符.我无法看到您的文本来自哪里,但您需要删除该流浪角色.

StrToFloat('+9.702827253E+003'); // succeeds
StrToFloat('+9.702827253E+003'#$A); // raise EConvertError
Run Code Online (Sandbox Code Playgroud)

呼叫Trim将删除它.

StrToFloat(Trim('+9.702827253E+003'#$A)); // succeeds
Run Code Online (Sandbox Code Playgroud)

但你最好正确地删除它.为了知道如何做到这一点,你首先需要知道它的来源.我们不知道.你做.