|
1 / 1 / 2
Регистрация: 23.09.2012
Сообщений: 91
|
|
Точность числа с плавающей точкой02.12.2012, 20:38. Показов 10332. Ответов 13
Метки нет (Все метки)
У типа float числа одинарной точности с плавающей запятой обеспечивают относительную точность 7-8 десятичных цифр.
Внимание, вопрос! Объясните, пожалуйста, когда точность 7, а когда 8 цифр. P.S. Примеры приветствуются)
0
|
|
| 02.12.2012, 20:38 | |
|
Ответы с готовыми решениями:
13
Максимальная точность для чисел с плавающей точкой Конструирование значения целого числа или числа с плавающей точкой по его дампу Усечение числа с плавающей точкой |
|
|
|
| 02.12.2012, 20:41 | |
|
числа с плавающей точкой на то и называют "с плавающей точкой", так как точка плавает в зависимости от порядка(экспоненты) числа
0
|
|
|
1 / 1 / 2
Регистрация: 23.09.2012
Сообщений: 91
|
|
| 02.12.2012, 20:43 [ТС] | |
|
И все-таки) когда 7, а когда 8?
0
|
|
|
|
|
| 02.12.2012, 20:45 | |
|
какое 7-8??? Ты вообще знаешь, что такое "число с плавающей точкой", как оно хранится в памяти и почему точка "плавает"???
тут объясняется как точность меняется с изменением порядка http://habrahabr.ru/post/112953/
0
|
|
|
|
|
| 02.12.2012, 20:48 | |
|
Точность чаще зависит от кампилятора, и от систмы в целом, хочешь большей точности используй Double - числа с двойной точностью,
а вообще как сказал Kuzia domovenok, сначала изучите принцип их работы.
0
|
|
|
1 / 1 / 2
Регистрация: 23.09.2012
Сообщений: 91
|
|
| 02.12.2012, 20:57 [ТС] | |
|
Я понимаю! сто раз уже читал про экспоненту, мантиссу, неявную единицу! Про то, что у double точность больше, мне также хорошо известно. Если, domovenok, ВЫ не можете ответить на конкретно заданный мною вопрос, отвечать и строить из себя крутого программиста не стоит.
0
|
|
|
|
||
| 02.12.2012, 21:10 | ||
|
Если нет, то представь такой упрощённый пример, что переменные хранятся в десятичной системе (если тебе так проще) с одним десятичным разрядом под порядок(со знаком) и пятью под мантиссу. В таком виде можно хранить следующие числа 0,99999*10^9=999990000,0 (точность до 5го знака слева от запятой) 0.99999*10^5=99999,0 (точность до 1го знака слева от запятой) 0.99999*10^0=0,99999 (точность до 5го знака справа от запятой) 0.99999*10^-5=0,0000099999 (точность до 10го знака справа от запятой) 0,99999*10^-9=0,00000000099999(точность до 14го знака справа от запятой) как тут можно говорить о какой-то конкретной точности в N знаков? + глянь эту картинку и подумай о точности http://habrastorage.org/storag... 838184.gif
1
|
||
|
1 / 1 / 2
Регистрация: 23.09.2012
Сообщений: 91
|
|
| 02.12.2012, 21:35 [ТС] | |
|
Вот смотри на мой пример z=(y-x)^1/2 при y=776644278 x=687524
при y=776644278 x=687542 Результат один и тот же(можешь проверить, если делать нечего). Вот в чем вопрос
0
|
|
|
|
|
| 02.12.2012, 22:29 | |
|
Рассмотрим твоё число y=776644278 какого оно порядка? По основанию 10 порядок очевидно 9, т.к. y=0,776644278*10^9
А по основанию 2? Посчитаем, что log2(776644278)=29.533 Значит порядок числа 29 Представим число в виде 776644278=M*2^29, где 2^29=536870912, где М - мантисса Тогда находим y=1,4466126970946788787841796875*2^29 Теперь мы готовы записать это число в переменную типа float. Об этом типе известно, что он выделяет в памяти под мантиссу 23 бит, а под порядок 8 бит Тогда порядок запишется в виде десятичное 29=00011101 в двоичной. (5 бит влезли в предоставленные флоатом 8) Мантисса записывается как число с отброшенной точкой и первой единицей (т.к. в таком представлении числа, число всегда начинается с единицы и она подразумевается по умолчанию) То есть 4466126970946788787841796875 в десятичной это 1110011000111010000001000000010110011001 0010100000101100001011 в двоичной. Имеем Аж 62 двоичных разряда! придётся обрезать с конца до 23х! Вот здесь и вносится погрешность Аналогично считаем х, вносим ещё погрешность, при расчётах вносим ещё.. и того и получаем.
1
|
|
|
1 / 1 / 2
Регистрация: 23.09.2012
Сообщений: 91
|
||
| 02.12.2012, 23:17 [ТС] | ||
|
Добавлено через 6 минут
Спасибо за очень развернутый и подробный ответ. Только я не догнал вот это
0
|
||
|
|
|
| 02.12.2012, 23:50 | |
|
твоё число y делится на два в двадцать девятой и получается мантисса
Почему именно в 29й ? Потому что если разделить на 2 в 30й получится число меньше единицы, а если на 2 в 28й, то больше. А мантисса должна иметь формат 1,ххххххх Как я нашёл, число 29 (порядок) быстро? Взял логарифм по основанию 2 от у.
0
|
|
|
1 / 1 / 2
Регистрация: 23.09.2012
Сообщений: 91
|
|
| 05.12.2012, 12:32 [ТС] | |
|
Почему надо обрезать с конца до 23?
0
|
|
|
|
|
| 05.12.2012, 18:44 | |
|
тип float выделяет в памяти под мантиссу 23 бит
0
|
|
| 05.12.2012, 18:44 | |
|
Помогаю со студенческими работами здесь
14
Округлить числа с плавающей точкой Вывод числа с плавающей точкой Числа с плавающей точкой после деления Неправильный вывод числа с плавающей точкой
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|