Задайте цифры после десятичной точки

У меня есть число с плавающей запятой, например, 12.12123 Есть ли функция, которая будет отображать только число с 2 цифрами после десятичной точки 12.12?

Вот код:

y1 = ( c1 - (a1 * x)) / b1;
 y2 = ( c2 - a2 * x) / b2;

if (y1 == y2)
  cout << "The same";

поэтому, если y1 = 1.001 и y2 = 1.002, они не отображаются одинаково.

Я попытался добавить.           cout.setf(ios:: fixed, ios:: floatfield);           cout.precision(2);

но, похоже, это не помогает.

Ответы

Ответ 1

/* The C way */
#include <stdio.h>
...
float f = 12.12123f;
printf("%.2f",f);

// The C++ way
#include <iostream>
...
float f = 12.12123f;
std::cout.setf(std::ios_base::fixed, std::ios_base::floatfield);
std::cout.precision(2);
std::cout << f;

// The alternative C++ way
#include <iostream>
#include <iomanip>
...
float f = 12.12123f;
std::cout << std::fixed << std::setprecision(2) << f;

В C, добавление 0 добавляется автоматически вправо, если для печати недостаточно цифр. В примерах на С++ это отключено; чтобы включить это поведение, вы должны включить фиксированный режим в потоке с помощью std::fixed (или включить соответствующие потоковые флаги с std::ios_base::setf()).

Изменить: я помню неправильно; если fixed не установлен, параметр precision указывает потоку общее количество отображаемых цифр, в том числе и до десятичной точки. Итак, в этом случае я считаю, что единственный способ - использовать режим fixed (примеры исправлены), что даст то же поведение printf.


Ссылки:

Ответ 2

Вы ищете printf("%.2f", 12.12123); или:

#include <iostream>
#include <iomanip>

using namespace std;
cout << fixed << setprecision(2) << 12.12123;

ИЗМЕНИТЬ: Вопрос изменился, так же как и ответ.

Вы никогда не хотите использовать прямое равенство с плавающей точкой, вы всегда сравниваете внутри epsilon. Ваш epsilon достаточно большой.

Замените if (y1 == y2) на if (abs(y1 - y2) < 0.01).

Ответ 3

double num = 1.4567;
printf("%.2f",num);

Это напечатает 1.46

Ответ 4

cout.precision(2);
cout <<f;

Ответ 5

#include <iostream>
#include <iomanip>

int main ()
{
   double d = 1.242354345; 
   using namespace std;
   cout << setiosflags(ios::fixed | ios::showpoint)
        << setprecision(2)
        << d; 
}

Ответ 6

Вероятно, вы задаете неправильный вопрос. Попробуйте следующее:

double diff = fabs(y1-y2);
if(diff < 0.005)
    cout << "Almost same";

Ответ 7

cout.setf(ios::fixed, ios::floatfield);
cout.precision(2);
float al = 42.645; //sample
cout << al;