Задайте цифры после десятичной точки
У меня есть число с плавающей запятой, например, 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;