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

  • Автор темы brink
  • Дата начала
Статус
Закрыто для дальнейших ответов.
B

brink

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

Код:
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;
}
 
B

Barmutik

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

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

LAW

Гость
#3
Это цифры или что?

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

Удачи.
 
B

brink

Гость
#4
Это цифры или что?

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

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