|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.11.2009, 21:53 | #1 |
Регистрация: 11.11.2009
Сообщений: 4
|
Это ошибка Delphi или моя ошибка???
Код:
|
11.11.2009, 22:36 | #2 |
минимакс
Участник клуба
Регистрация: 11.06.2008
Сообщений: 1,143
|
Дааа. прикольно
при a=-1 x= 0. 0 ...138 a=-3 x= 0. 0 ...1526 ... a= - 30 000 X= -0,0000001560700 Вывод только один - Дельфи как-то неточно хранит или работает с числами с плавающей точкой..... При этом, Если сделать шаг 0,5 - эффетка нет. Эффект начинается с еще одного прикол а=-3 шаг 0,3 =0,,,,3333 а=-4 шаг 0,4 =0,,,,5555 а=-6 шаг 0,6 =0,,,,6666 при формате вывода ffExponent 6,3838E-16 | 0,00 имеем более точное представление нуля. Выход ноль это не чистый ноль, а некое число. Что доказывает - вакуум населен!!! Мое предложение- используйте округление до заданной точности. а вот вам еще больший прикол -0,999999999999999 | 0,00 -0,899999999999999 | 0,00 -0,799999999999999 | 0,00 -0,699999999999999 | 0,00 -0,599999999999999 | 0,00 -0,499999999999999 | 0,00 -0,399999999999999 | 0,00 -0,299999999999999 | 0,00 -0,199999999999999 | 0,00 -0,0999999999999994 | 0,00 6,38378239159465E-16 | 0,00 0,100000000000001 | 0,00 0,200000000000001 | 0,00 0,300000000000001 | 0,00 0,400000000000001 | 0,00 0,500000000000001 | 0,00 0,600000000000001 | 0,00 0,700000000000001 | 0,00 0,800000000000001 | 0,00 0,900000000000001 | 0,00 Код:
-1,9 | 1,0864625110755E-311 -1,8 | 1,0864625110755E-311 -1,7 | 1,0864625110755E-311 -1,6 | 1,0864625110755E-311 -1,5 | 1,0864625110755E-311 -1,4 | 1,0864625110755E-311 -1,3 | 1,0864625110755E-311 -1,2 | 1,0864625110755E-311 -1,1 | 1,0864625110755E-311 То есть на самом деле в памяти хранится мусор. Но если сделать Код:
Прикол.. начнем с -1,1 с шагом 0,1 и вот что удивительно мусор появляется при переходе -0,4 | 0 -0,3 | 0 -0,2 | 0 -0,1 | 0 -1,38777878078145E-16 | 0 0,0999999999999999 | 0 0,2 | 0 0,3 | 0 0,4 | 0 0,5 | 0 Получается Дельфи тупит с "мизерами" и "плавающими точками", либо это особенности реализация ассеблера???? Код:
6,38378239159465E-16 = (приблизительно) = ноль!!!!! вот еще для наглядности Код:
и это пройдет...
Последний раз редактировалось grenles; 11.11.2009 в 23:46. |
12.11.2009, 15:17 | #3 |
Регистрация: 11.11.2009
Сообщений: 4
|
Это получается так и должно быть и это в порядке вещей???
|
12.11.2009, 15:26 | #4 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Это нормально, процессор не всегда может выполнять операции с вещественными числами абсолютно точно. Попробуй использовать тип extended вместо real, но какая-то мизерная погрешность всё-равно будет
пыщь
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Что это за ошибка | LuMax | Помощь студентам | 4 | 05.03.2013 13:18 |
Хуки (тестовый пример). В чем моя ошибка? | Tihon | Win Api | 2 | 31.12.2008 11:59 |
Скажите, в чем моя ошибка в сортировке, или напишите, как правильно сортировать. язык Паскаль. | Devo4ka | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 26.11.2008 00:19 |
Ошибка в Delphi или нет? | vitalik007 | Общие вопросы Delphi | 3 | 10.04.2008 19:47 |
базовые и производные классы (В чём моя ошибка) | umnix | Общие вопросы C/C++ | 5 | 01.12.2007 17:26 |