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

时间:2015-08-06 07:56:47

标签: delphi delphi-2007

我跟随了Delphi Basic的一个例子。我复制了它并且能够在我的Delphi 2007中运行它。

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

抓我的头......

var
readResult2:WideString;
strSN:String;
strSN2:String;
floatSN:Extended;

readResult2被视为' + 9.702827253E + 003'#$ A,如手表所示,

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

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

1 个答案:

答案 0 :(得分:5)

问题是尾随#$A字符。我无法看到你的文字来自哪里,但你需要删除那个流浪角色。

StrToFloat('+9.702827253E+003'); // succeeds
StrToFloat('+9.702827253E+003'#$A); // raise EConvertError

拨打Trim会将其删除。

StrToFloat(Trim('+9.702827253E+003'#$A)); // succeeds

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