информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медПортрет посетителяSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 С наступающим 
 Серьезная уязвимость в Apache Log4j 
 Крупный взлом GoDaddy 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Потому что 2.3 нельзя представить в виде многочлена конечной... 29.06.07 10:14  Число просмотров: 2552
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 29.06.07 10:16  Количество правок: 2
<"чистая" ссылка>
> Можно ещё 2 вопроса по поводу?
> 1. Почему некоторые числа в сопроцессор загружаются неточно
> (например, 2.3 загружается как 2.2999999), и как от этого
> избавиться?

Потому что 2.3 нельзя представить в виде многочлена конечной длины ( x1*2^-1 + x2*2^-2 + ... + xn*2^-n ) * 2^e
Не каждое число можно представить в виде конечной десятичной дроби (1/3, например), так же не каждое десятичное дробное число можно представить в виде конечной двоичное дроби. То же число 1/3 легко представляется в троичной системе счисления как 0.1, а число 1/2 в троичной системе не представляется, хотя спокойно представляется в десятичной и двоичной.

Как с этим бороться - да просто округлять. Если 2.3 округлять до одного знака после запятой, то и получится 2.3, а если до сотого знака, то все равно получится 2.3. Бывают обратные ситуации, когда получается 2.30000000000000001.

С флоатом бывает много казусов. Например не следует использовать сравнения на "равно". Причем при отладочной печати далекие младшие разряды могут быть и не напечатаны. Если использовать флоат малой точности, то цикл от нуля до милиарда с шагом 0.001 превращается в бесконечный.

> 2. Почему, когда используешь команду
> fincstp без предшествующей
> ffree, то второе загружаемое после этого
> в сопроцессор не загружаются числа (говорит, что
> NAN - не число)? Или может быть это
> касяк в моём процессор (у меня Athlon 900)?

Это не по адресу вопрос. Надо глубоко в документацию лезть. Могу сказать, что это не косяк. Можно проверить на другом проце. В противном случае было бы много шума про такого рода баг.
<programming> Поиск 








Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2022 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach