Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.06.2014, 19:00
Аватар для sumbik
sumbik sumbik вне форума
Прохожий
 
Регистрация: 18.06.2014
Сообщения: 20
Версия Delphi: XE3
Репутация: 10
По умолчанию Формат вывода числа после FloatToStr (FloatToStrF)

Доброго времени суток.

Числа хранятся в таком формате 1455.22 каждое в отдельной строке.

Если я делаю FloatToStrF(1455.22,ffNumber ,8,2)
В результате получаю 1 455,22

Читал про FloatToStrF, вроде как вывод должен быть формата 1,455.22.

Мне нужно получить в строку результат либо 1455.22 формата, либо 1,455.22

Заранее спасибо
Ответить с цитированием
  #2  
Старый 18.06.2014, 19:14
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
  DecimalSeparator:='.';
  Edit1.Text:=FloatToStrF(1455.22, ffFixed, 8, 2);
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
sumbik (19.06.2014)
  #3  
Старый 18.06.2014, 19:41
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от sumbik
...получить в строку результат... 1,455.22 ...
Код:
DecimalSeparator:= '.';
Edit1.Text:= StringReplace(FloatToStrF(1455.22,ffNumber ,8,2),#160,',',[rfReplaceAll]);
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
sumbik (19.06.2014)
  #4  
Старый 18.06.2014, 22:50
Аватар для sumbik
sumbik sumbik вне форума
Прохожий
 
Регистрация: 18.06.2014
Сообщения: 20
Версия Delphi: XE3
Репутация: 10
По умолчанию

А где в XE3 декларируется DecimalSeparator ?

Вижу ошибку:
[dcc32 Error] Unit2.pas(669): E2003 Undeclared identifier: 'DecimalSeparator'
Ответить с цитированием
  #5  
Старый 18.06.2014, 23:16
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
[dcc32 Error] Unit2.pas(669): E2003 Undeclared identifier: 'DecimalSeparator'
FormatSettings.DecimalSeparator
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Этот пользователь сказал Спасибо Bargest за это полезное сообщение:
sumbik (19.06.2014)
  #6  
Старый 22.06.2014, 16:18
Аватар для sumbik
sumbik sumbik вне форума
Прохожий
 
Регистрация: 18.06.2014
Сообщения: 20
Версия Delphi: XE3
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
Код:
  DecimalSeparator:='.';
  Edit1.Text:=FloatToStrF(1455.22, ffFixed, 8, 2);

Цифра выводится в формате "1 455.22", как привести к виду "1455.22" не дёргая каждую строку ?
Ответить с цитированием
  #7  
Старый 22.06.2014, 16:31
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

За отображение чисел, а в частности за разделитель групп, отвечают региональные настроки Windows. Хотя у меня ваш пример выводится нормально, несмотря на разделитель групп в настройках.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
sumbik (22.06.2014)
  #8  
Старый 22.06.2014, 16:37
Аватар для sumbik
sumbik sumbik вне форума
Прохожий
 
Регистрация: 18.06.2014
Сообщения: 20
Версия Delphi: XE3
Репутация: 10
По умолчанию

Как правильно обработать вывод числа ? Проверять каждый раз есть ли пробел (или запятая) в строке и удалять символ, или есть более правильный способ ?

Последний раз редактировалось sumbik, 22.06.2014 в 16:40.
Ответить с цитированием
  #9  
Старый 22.06.2014, 20:15
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

у меня от региональных настроек формат ffFixed не зависит, а вот ffNumber зависит от ThousandSeparator.

Цитата:
ffFixed Fixed point format. The value is converted to a string of the form "-ddd.ddd...". The resulting string starts with a minus sign if the number is negative, and at least one digit always precedes the decimal point. The number of digits after the decimal point is given by the Digits parameter--it must be between 0 and 18. If the number of digits to the left of the decimal point is greater than the specified precision, the resulting value will use scientific format.
ffNumber Number format. The value is converted to a string of the form "-d,ddd,ddd.ddd...". The ffNumber format corresponds to the ffFixed format, except that the resulting string contains thousand separators.



Код:
  DecimalSeparator:='.';
  ThousandSeparator:='_';
  Edit1.Text:=FloatToStrF(1455.22, ffFixed, 8, 2);
  Edit2.Text:=FloatToStrF(1455.22, ffNumber, 8, 2);
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
sumbik (23.06.2014)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter