2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2
 
 Re: Умножение чисел с плавающей запятой с…
Сообщение05.10.2013, 00:15 

(Оффтоп)

Alexu007 в сообщении #770471 писал(а):
Дело не в калькуляторе, а в алгоритмах длинной арифметики, ссылку на которую я дал. Это же почти готовое решение для автора темы. Там в структуре хранится массив цифр длинного числа, и в отдельной переменной количество цифр.
Надеюсь, не десятичных.

 
 
 
 Re: Умножение чисел с плавающей запятой с…
Сообщение05.10.2013, 08:32 

(Оффтоп)

В наш ли век терабайтов? К тому же современные компиляторы выделяют память иначе, чем программист. Я в одной из програм использовал статичный массив в миллион int - программа вовсе не разбухала до "лишних" 4-х мегабайт. Можно в программе записывать в файл по 1 байту - всё равно будет где-то копиться, и сбрасываться в порциями.

А вообще - да. В каждой int одна десятичная или шестнадцатиричная цифра. Так проще.

 
 
 
 Re: Умножение чисел с плавающей запятой с…
Сообщение05.10.2013, 13:56 

(Оффтоп)

Ну и зря. Можно спокойно там держать и цифры в основании 100, 1000 и даже 10000, не вредя контролю переполнения.

Alexu007 в сообщении #770854 писал(а):
К тому же современные компиляторы выделяют память иначе, чем программист. Я в одной из програм использовал статичный массив в миллион int - программа вовсе не разбухала до "лишних" 4-х мегабайт. Можно в программе записывать в файл по 1 байту - всё равно будет где-то копиться, и сбрасываться в порциями.
Лучше бы вы всё-таки знали, что именно там происходит и почему это сработало. Компиляторы пишут люди, компилятор не сможет покрыть все оплошности!

 
 
 
 Re: Умножение чисел с плавающей запятой с…
Сообщение05.10.2013, 16:11 

(Оффтоп)

Alexu007 в сообщении #770854 писал(а):
Я в одной из програм использовал статичный массив в миллион int - программа вовсе не разбухала до "лишних" 4-х мегабайт.

А с чего бы? Секция .bss в исполняемом файле только упоминается, но физически не хранится — все равно там одни нули. Это изобретение древнее, кстати — уже COFF-формат умел такое, а он был создан для UNIX System V.

Alexu007 в сообщении #770854 писал(а):
Можно в программе записывать в файл по 1 байту - всё равно будет где-то копиться, и сбрасываться в порциями.

Ага. Вот только есть языки, где стандартные библиотеки предлагают по умолчанию небуферизованный вывод.

arseniiv в сообщении #770922 писал(а):
Ну и зря. Можно спокойно там держать и цифры в основании 100, 1000 и даже 10000, не вредя контролю переполнения.

Между прочим, так оно и есть — пройдите по той ссылке, выберите "Предисловие" и пролистайте ближе к концу.

 
 
 
 Re: Умножение чисел с плавающей запятой с…
Сообщение05.10.2013, 16:55 
Всё так. Но для начала я хотел реализовать как можно проще - с основанием 10. Затем выяснилось, что простой заменой 10 на 16 программа может работать и с hex числами (там немного поменять пришлось, практически только ввод-вывод). Дальше переписывать я уже не стал.

Программа написана с учебной целью, это я среду программирования Qt так осваиваю потихоньку.

Кстати, для плавающей запятой реализация с osn = 10 лучше подходит, иначе придётся думать, как впихнуть запятую "в середину" int.

 
 
 
 Re: Умножение чисел с плавающей запятой с…
Сообщение05.10.2013, 18:49 
Joker_vD в сообщении #770977 писал(а):
Между прочим, так оно и есть — пройдите по той ссылке, выберите "Предисловие" и пролистайте ближе к концу.
Сгубит меня лень. :-( Надо было сначала посмотреть, а не верить на слово Alexu007.

Alexu007 в сообщении #770986 писал(а):
иначе придётся думать, как впихнуть запятую "в середину" int
$10^p = 100^{p/2} = 1000^{p/3}$ и т. д., и для хранения $p$ умножать соответственно.

 
 
 [ Сообщений: 21 ]  На страницу Пред.  1, 2


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group