2014 dxdy logo

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

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




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


27/04/09
28128

(Оффтоп)

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

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


24/05/09

2054

(Оффтоп)

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

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

 Профиль  
                  
 
 Re: Умножение чисел с плавающей запятой с…
Сообщение05.10.2013, 13:56 
Заслуженный участник


27/04/09
28128

(Оффтоп)

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

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

 Профиль  
                  
 
 Re: Умножение чисел с плавающей запятой с…
Сообщение05.10.2013, 16:11 
Заслуженный участник


09/09/10
3729

(Оффтоп)

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

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

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

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

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

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

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


24/05/09

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

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

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

 Профиль  
                  
 
 Re: Умножение чисел с плавающей запятой с…
Сообщение05.10.2013, 18:49 
Заслуженный участник


27/04/09
28128
Joker_vD в сообщении #770977 писал(а):
Между прочим, так оно и есть — пройдите по той ссылке, выберите "Предисловие" и пролистайте ближе к концу.
Сгубит меня лень. :-( Надо было сначала посмотреть, а не верить на слово Alexu007.

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group