Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > округление чисел


Автор: Simon14 2.2.2009, 20:39
каким образ ом можно сделать чтоб при решении какогото математического примера в отве выдавалось число с 3-4 числами после запятой

Автор: Dmi3ev 2.2.2009, 22:43
если правильно понял, ты хочешь выводить число, только после запятой 3 цифры...
Код

double res=0.33333333333333;
Edit1->Text=FloatToStrF(res,ffFixed,7,3);

Автор: Rodman 2.2.2009, 22:55
RoundTo

Автор: Simon14 2.2.2009, 23:10
пасиб

Автор: Usper 3.2.2009, 08:46
Однако обратите внимание, RoundTo() округляет так называемым "банковским методом", а не к ближайшему целому.

Автор: mrbrooks 3.2.2009, 09:26
как вариант
Код

double res=0.33333333333333;
Edit1->Text=String().sprintf("%4.3f",res);

Автор: Dmi3ev 3.2.2009, 13:51
еще SimpleRoundTo есть, на всякий...

Автор: chaos 3.2.2009, 13:58
mrbrooks, думаю так же бы стоило объяснить топикстартеру что означают 4.3

Добавлено через 1 минуту и 23 секунды
%.3f так думаю меньше вопросов бы возникло

Автор: Dmi3ev 3.2.2009, 14:03
Цитата

mrbrooks, думаю так же бы стоило объяснить топикстартеру что означают 4.3 

число, количество цифр которого не превышает 4, 3 из которых после запятой...

Автор: mrbrooks 3.2.2009, 14:09
Цитата(chaos @  3.2.2009,  13:58 Найти цитируемый пост)
mrbrooks, думаю так же бы стоило объяснить топикстартеру что означают 4.3

есть хелп. я даю направление.
Цитата(chaos @  3.2.2009,  13:58 Найти цитируемый пост)
%.3f так думаю меньше вопросов бы возникло 

ты так думаешь? а вдруг не поймет?

Автор: chaos 3.2.2009, 14:12
Dmi3ev, да ладно? smile
думаю что 
Код

printf("%4.2f\n", 3453451212.1234567);

выведет
3453451212.12

Автор: Dmi3ev 3.2.2009, 14:36
Цитата

Dmi3ev, да ладно? smile
думаю что 
Выделить всёкод C++ Builder
1:
    
printf("%4.2f\n", 3453451212.1234567);

выведет
3453451212.12 

хорошо, не так выразил свою мысль...
Цитата

число, количество цифр которого не превышает 4, 3 из которых после запятой... 

объясню кривым языком.
printf("%4.2f\n", 0.1);
выведет на экран 0.10, те после запятой будет 2 знака, всего в числе 3 цифры. Но: 
для того, что было более понятно, пробуем
printf("%4.2f\n", 0.1);
              и
printf("%10.2f\n", 0.1);
чтобы выравнивание было по левому краю:
printf("%-10.2f\n", 0.1);
короче, мысль теперь, надеюсь ясна...
+ пример chaos, который разъясняет, что само число никуда не пропадает...
плохо получается объснять)))

Автор: chaos 3.2.2009, 14:41
Dmi3ev, вот еще в дагонку топстартеру 
http://ru.wikipedia.org/wiki/Printf

Автор: Simon14 3.2.2009, 20:46
как я понял  printf("%4.2f\n", 3453451212.1234567); являеться частью класа или чтото напутал 

Автор: 586 3.2.2009, 21:05
Цитата(Simon14 @  3.2.2009,  20:46 Найти цитируемый пост)
как я понял  printf("%4.2f\n", 3453451212.1234567); являеться частью класа или чтото напутал  

printf (sprintf, vsprintf и т.д.) - это стандартная Сишная функция. Для её использования нужно подключить stdio.h.
Ещё у класса AnsiString есть метод AnsiString::sprintf.

Автор: Simon14 3.2.2009, 21:22
Примерно понял а можно с примером в проге например для вывона5 цифер после запятой в едит

Автор: Dmi3ev 3.2.2009, 21:46
Код

double res=0.33333333333333;
Edit1->Text=FloatToStrF(res,ffFixed,10,5);

Автор: 586 3.2.2009, 21:50
Код
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    //Edit1->Text = String().sprintf("%.5f", 5.123456789);
    Edit1->Text = RoundTo(5.123456789, -5);
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)