Возможно, об этом уже спрашивали раньше, но я не смог найти ничего подходящего.
Возможно ли / исполнитель реализовать своего рода произвольную / десятичную арифметику через специализированный класс или структуру произвольного / фиксированного количества целых чисел?
Позвольте мне уточнить; плавает (насколько я их понимаю), использую мантиссу, экспоненту и, возможно, бит знака. Они способны представлять 1/2, 1/4, 1/8 и т. Д., Но не, скажем, 1/10.
То, что я предлагаю, выглядит примерно так: пусть число будет представлено простым int
или int64_t
или их последовательностью, сохраняя только значения до степени десяти, полностью охватываемые диапазоном целого числа (поэтому для 32-разрядного типа int предел будет 10 ^ 8-1). Это только для простоты расчета. Добавьте к этому показатель степени, который скажет, на какую десятичную величину его нужно умножить, чтобы получить действительное число.
Пример: 125,36 будет представлен int
, равным 12536, и степенью десяти, равной -2. На самом деле это число может занять до int
с и кучу специальных функций.
Другой пример: 4 294 967 297 (то есть 2 ^ 32 + 1) займет два int
с, один равен 4, другой равен 294 967 297, а степень десяти равна 0.
Это хорошая идея, отбросить всю эту память для более простой / быстрой арифметики? Я не совсем продумал часть переполнения, возможно, вычисление int32_t+int32_t=int64_t
решит это прекрасно?