Сравнение двух double в Си
Как правильно сделать сравнение, чтобы только до 7 знаков после запятой (включительно). То есть если 8й знак различается, то сравнение все равно проходит.
#include <stdio.h>
#include <math.h>
#define eps 0.00000001
int main()
{
double first = 1.123123399;
double second = 1.1231234;
if (fabs(first - second) > eps) {
printf("ne ravno\n");
} else {
printf("ravno\n");
}
first = 1.1231233;
if (fabs(first - second) > eps) {
printf("ne ravno\n");
} else {
printf("ravno\n");
}
return 0;
}
Ну как советуют, делаю через маленькое значение. Но вот если 7й знак будет отличаться на единичку, а за тем, который меньше, будут следовать куча девяток, то сравнение пройдёт.
Ответы (1 шт):
Автор решения: Kromster
→ Ссылка
чтобы только до 7 знаков после запятой
- Умножаете на 10000000
- Округляете или обрезаете (тут уж вам выбирать как)
- Записываете результат в int
- Сравниваете intы