Я работаю в проекте XE6, но это может относиться и к другой версии компоновщика.
Я смотрю на имя функции, которое, я думаю, может вводить в заблуждение. Мне любопытно, если 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()
:Extended
:.ToDouble()
:long double
точнее double
точность. http://en.wikipedia.org/wiki/Long_double