Привет У меня есть следующие значения:
uint32_t value = 1230000;
uint32_t max_value = 1234567;
Теперь я бы хотел выполнить масштабирование:
uint32_t scaled = value * 1000000 / max_value;
Проблема в том, что если я использую 32-битное целое число, оно будет переполнено для таких больших чисел.
С другой стороны, я не могу использовать 64 бит. Есть идеи, как правильно реализовать упомянутое масштабирование?
EDIT
Просто упомяну, что я работаю над STM32 - 32-битным микроконтроллером, где выполнение 64-битного умножения и деления чрезвычайно затратно. Поэтому я бы хотел их избежать.