我在 XE6 项目中工作,但这也可能适用于其他版本的构建器。
我正在查看一个函数名称,我认为它可能具有误导性。我很好奇 StrToFloat()
是返回 float
还是返回 double
。我找到了一个替代方法,它是 .ToDouble()
但我们的代码中已经有一堆使用 StrToFloat()
的引用。我想验证我是否获得了 double 提供的正确精度。
我做了几个测试,比如:
UnicodeString temp = "1234567890.12345678901234567890";
double a = StrToFloat(temp);
double b = temp.ToDouble();
这些似乎给出了与我所做的测试相同的值,但我想验证 StrToFloat()
是否与 .ToDouble()
最佳答案
我找到了足够多的引用来回答我自己的问题...
StrToFloat()
返回一个 extended
,一个 extended 是一个 long double
。
.ToDouble()
返回一个 double
。
简短的回答是它们不一样,并且如上所示有所不同。
引用资料:
StrToFloat()
: http://docwiki.embarcadero.com/Libraries/XE6/en/System.SysUtils.StrToFloat扩展
: http://docwiki.embarcadero.com/Libraries/XE6/en/System.Extended.ToDouble()
: http://docwiki.embarcadero.com/Libraries/XE2/en/System.UnicodeString.ToDoublelong double
比double
精度更高。 http://en.wikipedia.org/wiki/Long_double
关于C++ Builder 是 StrToFloat() 与 .ToDouble() 相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25272249/