не вмещаемое в int64, поэтому хочу использовать int128
вопрос: как убедиться что числа умножились нормально и результат в влез в int128?
делаю так: __uint128_t tmp = (__uint128_t)a.amount * (__uint128_t)PRICE_SCALE;
Вроде есть __builtin_mul_overflow , которая выставит нужный флаг в случае переполнения
Разделить и получить обратно делимое.
Price scale будет небольшим, порядка 100-1000. Такое ощущение что 128 битные числа тут - это уже перебор...
Обсуждают сегодня