170 похожих чатов

Есть какой-то краткий и понятный ответ? Читал много, но так

и не понял сути

11 ответов

7 просмотров

Через float нельзя точно представить все дробные числа

Kirill 🚜
Через float нельзя точно представить все дробные ч...

скажем, можно представить только некоторые вещественные числа точно из несчетного множества вещественных чисел

Потому что 0.3 нельзя представить как сумму степеней двойки

Есть ответ. Но он тебе не понравится.

Примерно по той же причине, почему 1/3 записывается как 0,33...333...

есть - плавающая точка

Да, 0.1 и 0.2 в двоичной системе бесконечные периодические дроби (а у тебя все в двоичной системе в компудахтере) поэтому при сложении получаешь бесконечную двоичная дробь что в десятичной неправильно аппроксимируется, а вообще читай про IEEE 754

0.1 это 10^-1 = 5^-1 * 2^-1 = 1/5 * 2^-1 0.2 это 2*10^-1 = 2*5^-1 * 2^-1 = 2/5 * 2^-1 0.3 это 3*10^-1 = 3*5^-1 * 2^-1 = 3/5 * 2^-1 для 0.1 и 0.2 потребуется нормализация мантиссы - то есть 0.1 = 4/5 * 2^-3 0.2 = 4/5 * 2^-2, то есть мантиссы одинаковые, а показатели отличаются на 1, при этом мантисса 0.1 потеряла 2 бита точности, а 0.2 - один бит, при вычитании 0.2 - 0.1 - показатели уравняются, сдвинув мантиссу 0.1 обратно на 1 бит, результат будет 2/5 * 2^-2, для него снова требуется нормализация мантиссы - 4/5 * 2^-3, при сдвиге теряется точность 1 бит, у 0.3 нормализация мантиссы не требуется - 0.3 - 0.2 = 3/5 * 2^-1 - 4/5 * 2^-2 = 1/5 * 2^-1, для нормализации мантиссы потребуется сдвиг на 2 бита 4/5 * 2^-3 Итого - для результата 0.3-0.2 потеряется 2 бита точности мантиссы, а для 0.2-0.1 - один бит, результаты - разные числа, одно совпадает с представлением 0.1, другое - нет https://www.youtube.com/channel/UCe_TcJarfs-HKy3NySy8Kng/community?lc=UgxcMNqlfTBp1429Mdt4AaABAg&lb=Ugw0tueWuyoK9zPnyvF4AaABCQ тут вот тема поднималась)

короче - это из за нормализации мантиссы

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта