Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Умножение 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
Цитата(Artiom18 @  30.9.2013,  19:26 Найти цитируемый пост)
Собственно, вопрос вынесен в заголовок. Каким образом можно умножать числа с плавающей запятой, используя только целочисленную арифметику?
Реализация умножения определяется форматом, надо на основании информации о формате вытянуть отдельно мантиссы и отдельно порядки, порядки надо пересчитать на положение точки сразу за последним разрядом каждой мантиссы, тогда мантиссы будут целыми, соответственно они и умножаться будут, как целые, а порядки надо сложить и сумму пересчитать назад в то положение точки, которое принято в формате, результат закодировать согласно формату.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)