我正在XE6项目中工作,但这也可能适用于其他版本的builder。

我正在查看一个函数名称,我认为这可能会引起误解。我很好奇StrToFloat()返回float还是返回double。我找到了一个替代方案,即.ToDouble(),但我们的代码中已经有很多引用使用StrToFloat()。我想验证一下我获得的精度是否可以翻倍。

我已经做了一些测试,例如:

UnicodeString temp = "1234567890.12345678901234567890";
double a = StrToFloat(temp);
double b = temp.ToDouble();

这些似乎提供了与我所做的测试相同的值,但我希望验证StrToFloat().ToDouble()相同

最佳答案

我找到了足够的引用资料来回答我自己的问题...
StrToFloat()返回extended,扩展名为long double
.ToDouble()返回一个double

简短的答案是它们不一样,并且如上所述。

引用文献:

  • StrToFloat():
    http://docwiki.embarcadero.com/Libraries/XE6/en/System.SysUtils.StrToFloat
  • Extended:
    http://docwiki.embarcadero.com/Libraries/XE6/en/System.Extended
  • .ToDouble():
    http://docwiki.embarcadero.com/Libraries/XE2/en/System.UnicodeString.ToDouble
  • long doubledouble精度更高。 http://en.wikipedia.org/wiki/Long_double
  • 07-26 09:02