Приведение real к single

Компьютеры программирование программы математика паскаль

В паскале абс с этим делом что-то странное.

Код "программы":

var
r:real;
s:single;

begin
r:=random;
s:=r;
writeln(r,' ',s);
r:=s;
writeln(r,' ',s);
end.

На выходе:

0.897930570830559 0.8979306
0.897930562496185 0.8979306

Вопрос - как происходит такое преобразование?

Примечание:
>>Обычное округление
Но 1) 0.89793057 > 0.8979306 2) 0.89793056.... и внезапно откуда-то берется 2496185

Примечание:
Окей, с 1) Я был невнимателен. Там действительно обычное округление.

Примечание:
---------------------------
Как 0.897930_6 превращается в 0.897930_562496185 ?

Примечание:
<<1. Отмеряй 9,993 кг.>>
Это не математика.

<<2. Возьми 9,9999...>>
Тут слишком просто.

<<разные системы исчисления не равнозначны>>
А вот это дискуссионный вопрос, да.....

<<Этой точности хватает на хранение одной двестипятидесятимиллионной доли числа>>
Вообще-то там до 1.4∙10^-45

<<число просто немного изменилось>>
Это весьма исчерпывающее описание процесса преобразований.

<<встречал ведь кривые углы у текстур, которые необходимо сглаживать? - это именно из-за неточного вычисления ради производительности>>
На самом деле, нет. Эта проблема векторной графики возникает по аппаратным причинам. На вики хорошая статья. Почитайте, ага.
---------------------------
Хороший ответ, энциклопедичный, но мимо. Ответив на (не поставленный) вопрос, "почему", вы, к сожалению, не сказали "как".
Ответы:
Обычное округление
> Как 0.897930_6  превращается в 0.897930_562496185 ?
Очень просто.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.