Pull to refresh

Comments 10

Разве DCXI это 609? По идее это 611, а 609 римскими цифрами записывается как DCIX.
Небось и остальными числами обман :)
По-китайски и по-египетски, если верить таблице выше, записано 609. А вот по-гречески, если верить таблице выше, странное число, состоящее из 600 и 900.
DEC64 может точно представлять десятичные дроби, содержащие до 16 цифр

Это как такая магия возможна?

Ну как, элементарно, 2^56 это больше чем 10^16

Крокфорд написал в статье кучу мусора не относящуюся к DEC64.
Если вкратце, DEC64 особо не отличается от float64, кроме как в float64 база степени 2, а в DEC64 база степени 10.
Но если мантисса не в BCD разве по прежнему не будет «странных» округлений относительно десятичной системы?
Я в статье не увидел что в DEC64 мантисса в BCD.

Крокфорд напихал в доклад всякой не относящейся к делу ерунды, чтобы произвести впечатление, так как ничего другого видимо произвести не может.
Мантиссе и не нужно быть BCD. Мантисса — целое число которые может быть точно представлено в виде двоичного целого числа. Далеее вступает в дело формула value = coefficient * 10^exponent — и мы тут опять не теряем соответствия десятичной дроби. Теряем только в скорости умножениях и делениях на степени 10 при выравнивании по экспоненте — да, это будет гораздо медленнее на двоичных машинах чем сдвиги влево вправо. Т.е. в любых действиях над числом добавится одно умножение или деление на степень 10. Но это гораздо лучше чем BCD, так как в BCD умножение/деление на 10 необходимо выполнять для каждого разряда.
Аппаратная реализация DEC64 позволяет складывать числа за один цикл
А сколько тактов в цикле?
Редкий случай, когда картинки статьи лишь вызывают вопросы, усложняют.
Доклад Дугласа Крокфорда (Douglas Crockford) оставляет «двойное ощущение»:
исторический экскурс читается «на отлично», но практическая часть...

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

про BCD — есть же многообещающий стандарт:
Уплотнённые десятичные числа позволяют разместить 3 десятичные цифры в 10 битах (2^10=1024 комбинации, что достаточно для 3 десятичных цифр), причём кодирование устроено так, что преобразование между 10-битным кодом и тремя отдельными десятичными цифрами можно осуществить с помощью простой и быстрой логической схемы. Такое кодирование используется в десятичных числах с плавающей запятой, описанных в стандарте IEEE 754-2008.

IEEE 754-2008 упоминался здесь, на Хабре, в статье «Что нужно знать про арифметику с плавающей запятой»

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

«экспонент» размещают «в начале» для «улучшения» сравнения чисел и сортировки

результат 0 x NaN не равен нулю

И это правильно, как раз, из практических соображений

P.S.
Римляне хотели сократить запись. Для этого они придумали символы,
представляющие половину десяти или половину сотни (тысячи).
Один у них был представлен символом I (или палкой),
10 — X (пучок палок, соединенных вместе), а 5 — V, что есть всего лишь X пополам.

А вот это весьма интересно: действительно, шаг вперёд по сравнению с египетской системой и красивая идея
Sign up to leave a comment.