Сравнение двух 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 знаков после запятой

  1. Умножаете на 10000000
  2. Округляете или обрезаете (тут уж вам выбирать как)
  3. Записываете результат в int
  4. Сравниваете intы
→ Ссылка