Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > алгоритм записи чисел в 32-х разрядную сетку


Автор: VingradFan 19.10.2006, 21:21
ну собсна на простых примерах усё понятно 
ну а как поступить с этим: 0,(101)*10^11
если бы было 0,101*10^11 то:
|0|0|0|0|0|0|1|1|1|0|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|
1)вопрос в том как влияет период на форму записи
2)что делать если http://forum.vingrad.ru/index.php?showtopic=116027&view=findpost&p=894641 не влезает в 32 разряда?

Автор: maxim1000 19.10.2006, 22:58
никто действительные числа в комьютере точно не хранит - это не представляется возможным сейчас (да и ближайшем будущем, ИМХО)
при записи их просто обрезают
тут три варианта:
1. запись как целого числа: тут всё просто - целая часть 0, значит, 0
2. запись действительного числа с фиксированной запятой: умножают на какую-нибудь степень двойки (зависит от того, сколько бит выделили на целую часть, а сколько на дробную) и сохраняют, как целое число
3. с плавающей запятой - умножают на степень двойки так, чтобы число было в [0.1,1), сохраняют эту степень (экспонента) и сколько поместится цифр после запятой (мантисса)

на форуме, кстати, можно найти несколько вопросов типа:
почему я пишу x=0.1, а он мне выводит 0.0999999999999...
это всё оттуда...

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