Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция FloatToStrF, изменяемые параметры 
V
    Опции темы
Нитонисе
Дата 17.3.2010, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Преобразовываю некоторое число в строку
Код

AnsiString str = FloatToStrF(number,ffFixed,7,0);

Округление идет до целого.

А допустим в зависимости от неких настроек мне это число нужно получать с округлением до 1 знака после запятой.
Код

if (Okrulenie0->Checked)
  AnsiString str = FloatToStrF(number,ffFixed,7,0);
if (Okrulenie1->Checked)
  AnsiString str = FloatToStrF(number,ffFixed,7,1);


Все хорошо когда такое число всего одно, но когда их в программе сотня и они разбросаны по всему коду, то это становится проблемой. Как оформить это преобразование с изменяемыми параметрами? Тогда программа могла бы выглядеть так
Код

int i;
if (Okrulenie0->Checked)
  i = 0;
if (Okrulenie1->Checked)
  i = 1;

AnsiString str = FloatToStrF(number,ffFixed,7,i);


Как бы так сделать?

P.S. Okruglenie0 и Okruglenie1 - это переключатели чекбокс.
PM MAIL   Вверх
vikaz
Дата 17.3.2010, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 10
Всего: 12



создать функцию, что-то типо того:
Код

AnsiString Convert (float Buf, bool flag)
{
 if (flag) return FloatToStrF(Buf,ffFixed,7,0);
else FloatToStrF(Buf,ffFixed,7,1);
}


Работать с ней можно так!
Код


Edit2->Text = Convert (number, Okrulenie0->Checked);

Надеюсь я правильно тебя понял!

Это сообщение отредактировал(а) vikaz - 17.3.2010, 18:42


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
Нитонисе
Дата 17.3.2010, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



vikaz, идея неплохая, надо обмыслить и попробовать применить. Смущает только создание дополнительной функции.
PM MAIL   Вверх
vikaz
Дата 17.3.2010, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 10
Всего: 12



Конечно, если такое преобразование и проверка осуществляется всего несколько раз, то смысла нет! Но если этим придется пользоваться часто, то почему бы и нет!  smile 

кстати, можно еще краше сделать! Объявить эту строку в самом начале файле, где #include'ы....
Код

inline AnsiString Convert (float Buf, bool Flag) {return Flag ? FloatToStrF(Buf,ffFixed,7,0) :FloatToStrF(Buf,ffFixed,7,1);}

А работать с ней, как с обычной функцией!



Это сообщение отредактировал(а) vikaz - 18.3.2010, 10:13


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
Нитонисе
Дата 18.3.2010, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



vikaz, ваш вариант мне отлично подошел. Пусть и появилась еще одна функция, но она совсем не напрягает. Во всяком случае это намного лучше чем те решения, что приходили мне в голову) Спасибо.
PM MAIL   Вверх
vikaz
Дата 18.3.2010, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 10
Всего: 12



Пожалуйста!  smile 


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0702 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.