Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема отображения остатка числа, float 
:(
    Опции темы
InfMag
Дата 15.5.2005, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

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



Люди, мне нужно отобразить остаток числа из 2 чисел. Типа 123,00
Я помню из памяти как енто делается в Pascal'е.
Код

time_ready++;
Float time_mins = time_ready / 60;
Label1->Caption = "Прошло времени: "+FloatToStr(time_mins)+" мин. из "+IntToStr(MaxTime)+" мин.";

Как видите мне нужно перевести количество насчитаных секунд и отобразить минуты. Я хочу отобразить их типа этого: 0,22, но не могу. Он отображает только целые числа. smile
PM   Вверх
codelord
Дата 15.5.2005, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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



Попробуй следующее:
вместо этого Float time_mins = time_ready / 60;
Float time_mins = time_ready / 60.0;

и переведи time_ready++;
в float;

и если тебе нужно время то вот оно.
char str[256];
SYSTEMTIME systime;
GetLocalTime(&systime);
sprintf(str, "%02d:%02d:%02d", systime.wHour, systime.wMinute, systime.wSecond);
Label1->Caption =str;

можешь сравнивать соответствующие переменные и получать разницу.


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
codelord
Дата 15.5.2005, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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



Я тут накатал обработчик, возможно тебе подойдет.
В итоге Edit1 Показывает сколько прошло времени после выбора пункта в Popup меню.
Если надо можно и милисекунды добавить таким же способом.
Надо подключить <Mmsystem.h>
Код

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
//Это полный обработчик на реакцию.
//*begin время начало отсчета *now текущее *result разница
char str[256];
SYSTEMTIME systime;
GetLocalTime(&systime);
if(start1->Checked==false){
/////////////////////////////////////в невидимых Edit вместо external, я так люблю:)
Edit2->Text=systime.wHour;  //Это время  начала отсчета
Edit3->Text=systime.wMinute;
Edit4->Text=systime.wSecond;
///////////////////////////////////////
}
int hbegin=StrToInt(Edit2->Text); //Это время  начала отсчета
int mbegin=StrToInt(Edit3->Text);
int sbegin=StrToInt(Edit4->Text);
///////////////////////////////////////////
if(start1->Checked==true){ //Реакция на выбор в Popup меню.
////////////////////////////////
int hnow=systime.wHour;   //C помощью таймера определяем каждый раз текущее время
int mnow=systime.wMinute;
int snow=systime.wSecond;
 /////////////////////////////
int sresult=snow-sbegin;    //Тут уже считаем разницу между началом и текущим
 if(sresult<0){sresult+=60;
 mnow--;}
int mresult=mnow-mbegin;
 if(mresult<0){mresult+=60;
 hnow--;}
int hresult=hnow-hbegin;
//////////////////////////////////Это разница между временами
sprintf(str,"Прошло времени %02d:%02d:%02d",hresult,mresult,sresult);
Edit1->Text=str;
}
}


Это сообщение отредактировал(а) codelord - 15.5.2005, 15:18


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
InfMag
Дата 15.5.2005, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

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



codelord
Спасиб, попробую. smile
А время я юзаю проще: FormatDateTime("d.mm.yyyy hh:mm", Now())
ЗЫ: Можно еще вместо hh:mm писать t: FormatDateTime("d.mm.yyyy t", Now()) smile
Добавлено @ 20:21
Мдя. Уже усвоил. Но как мне обозначать, что остаток будет из 2 чисел, а не из десятка или еще там скока. smile
PM   Вверх
codelord
Дата 15.5.2005, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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



Всетаки попробуй код выше. Там как раз из двух чисел.
Но раз тебя не устраивает smile
Функцию не знаю. Но можно и без нее smile. Вот примерчик:
Код

//---------надо подключить <stdio.h>---------------
float b=54.65432195;
char buf[60];
sprintf(buf,"%2.2f",b);
Edit1->Text=buf;
//----------Результат 54,65-----------



--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
InfMag
Дата 15.5.2005, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

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



codelord
Можно поюзать, но к сожалению мне это не подойдет.
Люди, плиз помогите!
PM   Вверх
Амортизатор
Дата 15.5.2005, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

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



Может не самый оптимальный вариант, но будет работать
Код

       
       int time=125;
       int y=60;

       int g1=time/y;
       int g2=time-y*g1;

       String a;
       if (g2<10 && g2>0)
              a="0"+IntToStr(g2);
       if (g2==0)
              a="00";

       if (g2>=10)
              a=IntToStr(g2);

       String f1=IntToStr(g1)+":";
       String f2=a;
       String f=f1+f2;


Примечание: в f сидит результат, вместо "," лучше ставить ":" - видно, что основание не 10, а 60

Это сообщение отредактировал(а) Амортизатор - 15.5.2005, 23:16


--------------------
Поехали!
PM MAIL   Вверх
InfMag
Дата 16.5.2005, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

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



Код

sprintf(buf,"%2.2f",b);

Вроде прога билдится, но потом возникает ошибка по адресу в памяти.
PM   Вверх
InfMag
Дата 16.5.2005, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

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



Усе, нашел решение трабла.
FormatFloat("0.00", time_mins)
Help рулит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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