|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.10.2010, 15:36 | #1 |
Новичок
Джуниор
Регистрация: 17.10.2010
Сообщений: 2
|
Отображение значений переменных типа float и double(Языки Pascal и C)
Уважаемые, очень нужна ваша помощь. Помощь не в конкретном задании, а разобраться в том, почему так происходит. Из постановки моего вопроса видно, что получить ответ на это где-то, кроме форума, очень проблематично. Я пробовал: гуглем, в справках к IDE, спрашивал на "Ответах" - не нашел. Да и по банальной логике я просто не представляю себе, почему так происходит. Это абсурд какой-то. Так что очень прошу не игнорировать, не удалять, а кто знает - помочь, независимо от того, насколько "ламерский" в ваших глазах вопрос
Описаны переменные типа real и double. Первой присвоено, например, произвольное дробное значение: 2.08 В Watche фри паскаля я, наприммер, вижу такое:2.0800000000000001 или если присвоить, например, тоой же переменной значение типа 35.6586878, то в Watch'e я получу вот это: 35.658687800000003 А когда описываю переменную типа extended и присваиваю ей, например значение 35.8675e+1333, тоо пишет "бесконечность" в Watche, если -1333, то 0 или -0 пишет ну это может из-за тоого, что не влазит в Watch. Но вот все равно этот коэффициент он берет и "извращает": 3.565868779999999999833373191864641 1 ОТКУДА все эти промежуточные цифры? не могу даже представить себе. Да, там есть система точности, округления и т.д. но ЭТ О-то тут причем. это вообще из какой-то неизвестной мне оперы Помогите, пожалуйста, очень нужно КОНКРЕТНО знать, почему так происходит В Visual Studio с "минус тысяче триста тридцать третей" степенью то же самое, а с плюсом не компилируется, пишет "Слишком большая константа" Хотя по теории значение "3.56586878e+1333" ой-как вписывается в диапазон(там вроде от десяти в минус четыре тысячи какой-то до десяти в плюс четыре тысячи какой-то) ВООБЩЕ НЕ ПОНИМАЮ, ПОЧЕМУ ТАК. С ума можно сойти, помогите разобраться, пожалуйста А вот эти промежуточные цифры-то откуда в обычных float'ах, совершенно не представляю. Это вообще за гранью моего понимания |
17.10.2010, 16:24 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Потому что процессор точно считать не может. Увы.
Уже тут обсуждались перипетии точности вещественных чисел, поищи поиском, там и статьи выкладывали и обьясняли почему.
I'm learning to live...
|
17.10.2010, 16:54 | #3 | |
Новичок
Джуниор
Регистрация: 17.10.2010
Сообщений: 2
|
Цитата:
По каким тэгам искать на форуме, скажи приблоизительно? "Точность вещественных чисел"? Кстати, что-то я не понял... Вы про процессор компьютера? То есть обычный калькулятор может, а самая высокоразвитая на данный момент вычислительная техника не может? Почему? Или Вы что-то со средой разработки связанное имеете в виду? И почему тогда такой большой диапазон в теории указан, если на самом деле диапазон ниже? Последний раз редактировалось Сырно; 17.10.2010 в 17:02. |
|
17.10.2010, 18:37 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Увы точно не помню тему, но вот кажись нашел: http://www.programmersforum.ru/showthread.php?t=15387
В общем начни отсюда свои поиски. удачи )
I'm learning to live...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
сложение 2 переменных типа float? | sVasilich | Visual C++ | 7 | 22.06.2010 10:55 |
in Формула типа String out результат типа Double | Gypsy | Общие вопросы Delphi | 3 | 16.04.2010 10:21 |
В чём различия между float и double | Rafff | Общие вопросы C/C++ | 6 | 04.04.2010 10:50 |
float или double? | zgest | Общие вопросы C/C++ | 10 | 20.03.2010 15:14 |