Прямо сейчас я делаю следующее:
uint8_t ManualFlow = 40; // 0 -> 255 Unsigned Char
uint24_t ME; // 0 -> 16777215 Unsigned Short Long
ME = (uint24_t) ManualFlow*10; // Have to make this hack otherwise malfunction in calculation
ME /= 6;
ME *= (80 - 60);
ME /= 100;
ME *= 414;
Конечный результат:
40*10 = 400
400/6 = 66
66*20 = 1320
1320/100 = 13
13*414 = 5382
То, что я бы любил, похоже на это:
4/60 = 0,0667 * 20 * 4188 * 0,998 = 5576 (more accurate).
Как я могу сделать это более точно, не используя float
s или double
s, и самое главное, не увеличивайте размер моего кода слишком сильно.
С наилучшими пожеланиями Sonite