Поиск:

Ответ в темуСоздание новой темы Создание опроса
> округление числа, как округлить число в Edit 
:(
    Опции темы
Маринка
Дата 27.5.2005, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



есть программка, которая проводит нехитрые подсчеты (по формулам) по страхованию. С++Builder
Внимание вопрос: smile в Edit выводятся результаты вычислений типа
Edit18->Text=N[X+m]/D[X]; надо их округлить.
вот ещё некоторые выдержки, чтобы чуть было понятно:
X=Edit1->Text.ToInt();
int q=101;
D=new double [q+1];
for (i=0;i<q+1;i++)
{
D[i]=L[i]/pow((1+Edit3->Text.ToDouble()),i);
}
Я думаю: можно сделать RoundTo. да? Но куда и как её можно вставить? подскажите. smile
Я вроде искала по форуму подобные темы, но не увидела того, что мне надо. может и плохо искала, но подскажите, а? pleeeeeasee(!!!)
PM MAIL WWW ICQ   Вверх
codelord
Дата 28.5.2005, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Насколько я понял, тебе нужно округлить до целых чисел. Тогда можешь использовать сл. образом.
только подключи <Math.h>.
Код

float x=65465.454654564;
float y;
y=floor(x+0.5);
Edit2->Text=y; //при x=65465.654654564 результат 65466, при
//x=65465.454654564 результат 65465



Expression Value

RoundTo(1234567, 3) 1234000
RoundTo(1.234, -2) 1.23
RoundTo(1.235, -2) 1.24
RoundTo(1.245, -2) 1.24

Это сообщение отредактировал(а) codelord - 28.5.2005, 10:47


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


Новичок



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

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



мне надо не до целых, а до хотя бы десятых.

так-то хорошо писать :
х=2.3455677
roundto(х,-3)
но у меня нет такого, что х= какому то контретному числу, а просто выводится результат вычисления. И его надо сократить.
Что-то я не понимаю.
PM MAIL WWW ICQ   Вверх
codelord
Дата 29.5.2005, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Делай тогда так, до сотых 0.00 и десятых 0.0 соответственно
Код

float x=65465.454654564;
Edit2->Text=FormatFloat("0.00",x);   //результат 65456,45



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


Новичок



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

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



ага СПАСИБО разобралась, сделала...(!!!)

а ещё можно спросить? : почему файл справки не работает - при нажатии f1 появляется окно - обратитесь к разработчику справки (разработчик - типа я )) типа нет такого раздела (с этими разделами я вообще ничего не понимаю)
в общем в свойствах формы моей главной в Helpfile пишу имя файля справки, который я сделала, выше пишу номер раздела (оставляю - 0) Да и не только 0, и, 1, и, 2 и 3 пробовала )

короче , не работает, почему? smile
PM MAIL WWW ICQ   Вверх
codelord
Дата 30.5.2005, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Если твой файл справки работает автономно без программы, сделай так
Скажем заведи пункт mainmenu, например help, ShotCut сделай F1,
и вставь обработчик:
Код

ShellExecute(Handle,NULL,"myhelp.hlp",NULL,NULL,SW_RESTORE); 



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


Новичок



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

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



спасибо большое!!!!

а ещё ..ещё можно?....вот тоже надо, чтобы выводились округленные цифры. на форме есть элемент - StringGrid. Цифры (расчетные) берутся из другой формы:
StringGrid1->Cells[1][1+i]=Form1->L[i];

на форме1 есть такое:
int q=101;
L=new long [q+1];
for (i=0;i<q+1;i++)
{
L[i]=StrToInt(RichEdit1->Lines->Strings[i]);
}

Куда тут можно что-нибудь записать для округления?
Очень прошу помочь.
PM MAIL WWW ICQ   Вверх
codelord
Дата 1.6.2005, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я не очень понял, что ты хочешь округлять, точнее какой тип long?????
В общем я думаю, что тебе нужно округлять в RichEdit, т.е до того как туда попадут твои цифры.
Но если это нельзя сделать, то перегрузить и округлить RichEdit, до того как ты будешь заполнять L, вот примерчик как я попробовал это сделать,
может тебе подойдет.
Код

//--------------------Заполняем от балды RichEdit-----------
RichEdit1->Lines->Clear();
int i;
for(i=0;i<=1000;i++){ // i Количество строк 
double str=(random(10000)/2.33333333);
RichEdit1->Lines->Add(str);
}
//--------------------конец заполнения-----------------------
Sleep(2000); //чтоб было видно эффект
//--------------------Перегружаем RichEdit-------------------
double m;
AnsiString str;
for(i=0;i<=1000;i++){    //количество строк по потребностям
str=RichEdit1->Lines->Strings[i];  //для наглядности гоняем типы туда сюда, можно и короче
m=StrToFloat(str);
str=FormatFloat("0.00",m);
RichEdit1->Lines->Strings[i]=str;
}
//----------------------end reset richedit-----------------



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


Новичок



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

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



так..да...неправильно я сказала..в L[i] -то что округлять -нечего )
ещё раз приведу текст кода формы1, мне надо округлить Di, Ni, Ci, Mi, а Li -берутся из файла и там действительно нечего округлять (балда я :-)
Код

AnsiString w;
w=Edit3->Text.c_str();
int t=w.AnsiPos(".");
if (t>0)
 {
  w.Insert(",",t+1);
  w.Delete(t,1);
 }
Edit3->Text=w.c_str();

int i;
if (RadioGroup2->ItemIndex==0)
{
RichEdit1->Lines->LoadFromFile("deathM.txt");
}
else
{
RichEdit1->Lines->LoadFromFile("deathW.txt");
}
int q=101;
double per1;
D=new double [q+1];
M=new double [q+1];
N=new double [q+1];
L=new long [q+1];
C=new double [q+1];
d=new long [q+1];

k=CSpinEdit1->Value;

for (i=0;i<q+1;i++)
 {
   L[i]=StrToInt(RichEdit1->Lines->Strings[i]);
 }
for (i=0;i<q+1;i++)
 {
  d[i]=L[i]-L[i+1];
 }
for (i=0;i<q+1;i++)
 {
  D[i]=L[i]/pow((1+Edit3->Text.ToDouble()),i);
 }
for (i=0;i<q+1;i++)
 {
  N[i]=0;
  for (int j=i;j<q;j++)
  {
  N[i]=N[i]+D[j];
  }
 }
for (i=0;i<q+1;i++)
 {
  C[i]=d[i]/pow((1+Edit3->Text.ToDouble()),i+1);
 }

for (i=0;i<q+1;i++)
 {
  M[i]=0;
  for (int j=i;j<q;j++)
  {
  M[i]=M[i]+C[j];
  }
 }
 

так как мне можно сделать??
PM MAIL WWW ICQ   Вверх
codelord
Дата 1.6.2005, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

Из того что имеем из кода, могу предложить далеко не оптимальный способ. Смысл в том, чтобы ввести переменную типа
AnsiString, присвоить ей округленное значение, и после этого вернуть переконвертировав твоему массиву. Например для одного цикла:

Код

for (i=0;i<q+1;i++)    
    {    
      D[i]=L[i]/pow((1+Edit3->Text.ToDouble()),i);
      AnsiString okr;
      okr=FormatFloat("0.00",D[i]);
      D[i]=StrToFloat(okr);
    }



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


Новичок



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

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



ВСЁЁЁЁ !!!! СПАСИБО!!!!!!
ВСЁ ОТЛИЧНО РАБОТАЕТ и даже справка (!!!)
спасибо спасибо огромное!

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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