Текущий архив: 2008.09.28;
Скачать: CL | DM;
Вниз
Ошибка компиллятора? Найти похожие ветки
← →
Renegat © (2008-08-18 23:56) [40]2 AlexDan:
Как известно, любые числа, будь то целые или дробные, хранятся в компе в виде последовательностей битов, т.е. разрядов двоичной системы счисления. Так вот, судя по Вашей анкете Вы должны быть наслышаны о переводе чисел одной системы счисления в другую. Так вот, чтобы зашифровать дробное десятичное число, его нужно представить дробным двоичным.
Попробуем это сделать с 0.4 - и с удивлением обнаружим, что 4/10 = 2/5.
Такая (пятеричная) дробь по определению не может быть представлена в виде конечной двоичной - только как периодическая!
Так вот, к чему я клоню.
Существуют разные форматы представления не-целых чисел: REAL4(Single), REAL8(Double) и REAL10(Extended). И у каждого из этих типов мантисса имеет разную длину. И в итоге, когда получилость, скажем, двоичная дробь 0.(1101) то в разных типах она будет выглядеть (условно) какSingle: 0.1101
Double: 0.11011101
Extended:0.110111011101
Вещественные константы, если меня память не подводит, хранятся в Паскале как Extended. А тип вашей переменной, скорее всего, Single или Double.
[+]: Более того, не стоит сбрасывать со счетов и погрешности округления при вычислениях! В результате них даже сравнение равных по размеру типов обернётся дохлым номером...
В итоге получаем правило, которое стотыщ раз уже твердили миру (только ему всё ещё упрямо не хотят доверять):
Никогда не проводите точное сравнение вещественных!!!
ЗЫ: +1 к Сергею.
← →
Amoeba © (2008-08-19 00:41) [41]
> Renegat © (18.08.08 23:56) [40]
А стоит ли метать бисер?
← →
Германн © (2008-08-19 01:01) [42]
> Юрий Зотов © (18.08.08 23:10) [28]
>
> Серег, совет - не трать время.
+1
Сей автор уже давно тут известен как троешник не желающий учиться. И в этом посте он это подтвердил ещё раз.
Страницы: 1 2 вся ветка
Текущий архив: 2008.09.28;
Скачать: CL | DM;
Память: 0.54 MB
Время: 0.023 c