| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Умножение float с помощью целочисленной арифметики |
| Автор: Artiom18 30.9.2013, 19:26 |
| Собственно, вопрос вынесен в заголовок. Каким образом можно умножать числа с плавающей запятой, используя только целочисленную арифметику? |
| Автор: Akina 30.9.2013, 19:47 |
| Бери любой выч. софт и смотри исходник. Можно скажем какой-нить линуховый калькулятор. |
| Автор: mega 30.9.2013, 20:33 | ||
примерно так же, как http://hashcode.ru/questions/177357#178211 Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//Умножение-float-с-помощью-целочисленной-арифметики-id5249a658ae20159c6c000000#findElement_E7045_5249b604ae2015b7730002bc_0 |
| Автор: Pavia 1.10.2013, 09:33 |
| https://github.com/larsr/bochs/blob/master/fpu/softfloat.cc Смотри функцию float32 float32_mul(float32 a, float32 b, float_status_t &status) |
| Автор: ТарасАтавин 24.11.2013, 19:35 |
| Реализация умножения определяется форматом, надо на основании информации о формате вытянуть отдельно мантиссы и отдельно порядки, порядки надо пересчитать на положение точки сразу за последним разрядом каждой мантиссы, тогда мантиссы будут целыми, соответственно они и умножаться будут, как целые, а порядки надо сложить и сумму пересчитать назад в то положение точки, которое принято в формате, результат закодировать согласно формату. |