C++ Builder является StrToFloat() так же, как.ToDouble()
Я работаю в проекте XE6, но это может относиться и к другой версии компоновщика.
Я смотрю на имя функции, которое, я думаю, может вводить в заблуждение. Мне любопытно, если StrToFloat()
возвращает float
или если он возвращает double
, Я нашел альтернативу, которая .ToDouble()
но у нас уже есть несколько ссылок в нашем коде, который использует StrToFloat()
, Я хочу убедиться, что я получаю правильную точность, которую предлагают двойники.
Я сделал пару тестов, таких как:
UnicodeString temp = "1234567890.12345678901234567890";
double a = StrToFloat(temp);
double b = temp.ToDouble();
Похоже, что они дают те же значения из тестов, которые я сделал, но я хочу проверить StrToFloat()
такой же как .ToDouble()
1 ответ
Я нашел достаточно ссылок, чтобы ответить на мой собственный вопрос...
StrToFloat()
возвращает extended
и расширенный является long double
,
.ToDouble()
возвращает double
,
Таким образом, короткий ответ: они не одинаковы и различаются, как показано выше.
Рекомендации:
StrToFloat()
: http://docwiki.embarcadero.com/Libraries/XE6/en/System.SysUtils.StrToFloatExtended
: 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