Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Странное поведение FloatToStr / 8 сообщений из 8, страница 1 из 1
14.08.2018, 12:51
    #39687426
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение FloatToStr
Такой код:
ShowMessage(FloatToStr(0.00001));

выдаёт на экран 1E-5

Причём любые функции перевода дробного числа в строку так поступают.
Я конечно понимаю, что если число слишком маленькое или слишком большое, то приходится применять "научный" формат, но в данном случае для типа Double это число вовсе не такое уж и маленькое. Поэтому ситуацию считаю странной (или я дурак и чего-то не понимаю). Хотя бы одну функцию предусмотрели бы.
Я в итоге использовал FormatFloat('0.0000000', V) (мне этого достаточно для отображения GPS-координат).
...
Рейтинг: 0 / 0
14.08.2018, 12:59
    #39687430
Tactical Nuclear Penguin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение FloatToStr
в чем вопрос? прочитайте справку, там это описано...
...
Рейтинг: 0 / 0
14.08.2018, 13:06
    #39687433
MikeDD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение FloatToStr
DmSer, RTFM FloatToStrF
...
Рейтинг: 0 / 0
14.08.2018, 13:08
    #39687436
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение FloatToStr
Описано (эта фича - документирована).

ffGeneral - General number format. The value is converted to the shortest
possible decimal string using fixed or scientific format. Trailing zeros
are removed from the resulting string, and a decimal point appears only
if necessary. The resulting string uses fixed point format if the number
of digits to the left of the decimal point in the value is less than or
equal to the specified precision, and if the value is greater than or
equal to 0.00001. Otherwise the resulting string uses scientific format,
and the Digits parameter specifies the minimum number of digits in the
exponent (between 0 and 4).

Но логику разработчиков не могу разгадать, чем им понравилось именно число 0,00001, а не 0,000001 или 0,0000001. Все эти числа в Double прекрасно умещаются.
...
Рейтинг: 0 / 0
14.08.2018, 15:57
    #39687580
Странное поведение FloatToStr
DmSerя дурак и чего-то не понимаюты сам ответил на свой вопрос.
...
Рейтинг: 0 / 0
14.08.2018, 16:00
    #39687583
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение FloatToStr
DmSer,

возможно не очень читаемые.
...
Рейтинг: 0 / 0
15.08.2018, 10:17
    #39687884
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение FloatToStr
Вот ещё немного полезной информации :)

В C# метод ToString поступает также, т.е. 0.00001.ToString() выдаёт на экране 1E-5. Чувствуется влияние Delphi :)

В JavaScripte научный формат включается для 0.0000001.toString().
...
Рейтинг: 0 / 0
15.08.2018, 13:27
    #39688073
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение FloatToStr
Код: pascal
1.
ShowMessage(FloatToStrF(0.00001, TFloatFormat.ffFixed, 18, 5));
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Странное поведение FloatToStr / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]