Форматный вывод в cout
От: Igore Россия  
Дата: 21.02.05 15:58
Оценка:
Напишу сразу пример:

#include <stdio.h>
#include <iostream.h>

void main(){
   float ft=0.000000001;
   printf("%1.10f\n",ft);//хочется чтобы выводилось именно так
   cout << ft <<endl;//а выводится так
}


Имется ввиду вопрос, как в cout указать число выводимых знаков до и после запятой, а также как избавиться от експонентной формы вывода числа.
Re: Форматный вывод в cout
От: Анатолий Широков СССР  
Дата: 21.02.05 16:03
Оценка:
I>Имется ввиду вопрос, как в cout указать число выводимых знаков до и после запятой, а также как избавиться от експонентной формы вывода числа.

см. манипуляторы std::setw, std::setprecision, std::fixed
Re[2]: Форматный вывод в cout
От: Igore Россия  
Дата: 21.02.05 16:06
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>см. манипуляторы std::setw, std::setprecision, std::fixed


Если не сложно, то можно просто пример?
Re[3]: Форматный вывод в cout
От: Анатолий Широков СССР  
Дата: 21.02.05 16:11
Оценка:
I>Если не сложно, то можно просто пример?

#include <stdio.h>
#include <iostream>
#include <iomanip>

int main()
{
   double ft = 0.000000001;
   printf("%12.10f\n",ft); // кстати, здесь у вас был неверный формат
   std::cout << std::fixed << std::setw(12) << std::setprecision(10) << ft << std::endl;
}
Re[4]: Форматный вывод в cout
От: Igore Россия  
Дата: 21.02.05 16:17
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ> printf("%12.10f\n",ft); // кстати, здесь у вас был неверный формат


А почему этот формат не правильный?
Спасибо в VC это работает, а нет ли чего-нибуть более общего?
Re[5]: Форматный вывод в cout
От: Анатолий Широков СССР  
Дата: 21.02.05 16:19
Оценка:
Здравствуйте, Igore, Вы писали:

I>Здравствуйте, Анатолий Широков, Вы писали:


АШ>> printf("%12.10f\n",ft); // кстати, здесь у вас был неверный формат


I>А почему этот формат не правильный?


Потому что первое число обозначает ширину поля вместе с точкой и количеством знаков после запятой.

I>Спасибо в VC это работает, а нет ли чего-нибуть более общего?


Не понятен вопрос.
Re[6]: Форматный вывод в cout
От: Igore Россия  
Дата: 21.02.05 16:24
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>Потому что первое число обозначает ширину поля вместе с точкой и количеством знаков после запятой.

Понял.

АШ>Не понятен вопрос.


Например на Watcom C/C++32 это не работает.
Хотел себе жизнь облегчить, но видно не судьба , эх буду продолжать пользоваться printf().
Re[7]: Форматный вывод в cout
От: Анатолий Широков СССР  
Дата: 21.02.05 16:25
Оценка:
Здравствуйте, Igore, Вы писали:

I>Здравствуйте, Анатолий Широков, Вы писали:


АШ>>Потому что первое число обозначает ширину поля вместе с точкой и количеством знаков после запятой.

I>Понял.

АШ>>Не понятен вопрос.


I>Например на Watcom C/C++32 это не работает.


А какой версии?
Re[8]: Форматный вывод в cout
От: Igore Россия  
Дата: 21.02.05 16:28
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>А какой версии?

WATCOM C/C++ version 11.0c.
Re: Форматный вывод в cout
От: Аноним  
Дата: 21.02.05 17:02
Оценка:
Здравствуйте, Igore, Вы писали:

I>Напишу сразу пример:


I>
I>#include <stdio.h>
I>#include <iostream.h>

I>void main(){
I>   float ft=0.000000001;
I>   printf("%1.10f\n",ft);//хочется чтобы выводилось именно так
I>   cout << ft <<endl;//а выводится так
I>}
I>


I>Имется ввиду вопрос, как в cout указать число выводимых знаков до и после запятой, а также как избавиться от експонентной формы вывода числа.



Почитай классику!
Страуструп, Язык программировния С++
http://lib.ru/CPPHB/cpptut.txt

Про форматирование вывода — глава 10.4 Форматирование
Re[2]: Форматный вывод в cout
От: Igore Россия  
Дата: 21.02.05 17:20
Оценка:
Здравствуйте, Аноним, Вы писали:

Спасибо, то что надо, а вот и решение:

#include <iostream.h>
#include <fstream.h>
#include <iomanip.h>

void main(){
   double db=0.000000001;
   fstream fp("probe.txt",ios::out);

   fp.setf(ios::fixed);   
   cout.setf(ios::fixed);
   cout.precision(10);
   fp.precision(10);

   cout << db << endl;
   fp << db << endl;
   fp.close();
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.