Мне показалось, что целая часть объёма меняется в полном 31-разрядном диапазоне 0...2*10^9.
А дробная - в диапазоне от 0.000000000 до 0.9999999999.
Поэтому пример будет несколько иным:
- предыдущее 999999123 и 0,123
- текущее 999999234 и 0,023
= разность 999999234-999999123=111 и 0,023-0,123=-0,100
выполняем заём из разряда целых 111-1=110 и прибавляем этот заём к дробным -0,100+1,000=+0,900
итого 110 и 0,900 т.е. 110,900 - такое число почти без погрешности поместится в float с его 24 битами мантиссы (2^24=16777215 - 7-8 точных цифр).



Ответить с цитированием