Ttable - не сходится сумма

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем brink, 30 мар 2007.

Статус темы:
Закрыта.
  1. brink

    brink Гость

    Проблемма такая: считую общую сумму и 4е составных сумм, после суммирую 4е составных и сравнюю с общей - результат - например, есть две сотавные они сходятся с общей, а выдает неравенство?

    Код (Text):
    bool __fastcall TDM::CheckKEKVP(int i)
    {
    AnsiString tmp;
    double s, s1, s2, s3, s4, sa;
    s = itsTbl->FieldByName("S")->AsVariant; //общая сумма
    s1 = itsTbl->FieldByName("S1")->AsVariant;
    s2 = itsTbl->FieldByName("S2")->AsVariant;
    s3 = itsTbl->FieldByName("S3")->AsVariant;
    s4 = itsTbl->FieldByName("S4")->AsVariant;
    sa = s1+s2+s3+s4;
    if(s != sa)
    {
    tmp = "!!!Сумма по всем КЕКВ не сходится с общей в строке: ";
    tmp += i;
    itsMemo->Lines->Add(tmp);
    return false;
    }
    return true;
    }
     
  2. Barmutik

    Barmutik Гость

    Погрешность округения возможно .. сравнивайте с какой-то дельтой ...

    И не по теме вопрос ... А зачем получать дробные значения из базы как Варианты?
     
  3. LAW

    LAW Гость

    Это цифры или что?

    Зачем использовать вариант? Им можно сложить колбасу с огурцами.
    Используй float. Всё будет ок.

    Удачи.
     
  4. brink

    brink Гость

    Вариант использовал в качестве эксперимента. Там действительно надо было округлить до 2 знаков...
    У меня такой вопрос: размер поля ”S”,”S1”,”S2”… в dbf- файле - 17 целых и 2 дробных чисел, каким типом можно воспользоваться, чтобы корректно подсчитать сумму в этих полях.
     
  5. LAW

    LAW Гость

    Я пользуюсь NUMERIC(15,2).

    Удачи.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей