Текущая страница - Ineteger VS Real - Форум



Как Вы нашли сайт?

Всего ответов - 145

Rambler's Top100

Баннер нашего сайта

Форум программистов

Создание игр
на Adobe Flash

Создание игр на Adobe Flash

Блог Виталия Серова
Виталий Серов - БЛОГ

http://delphi-guru.pp.ua
Уроки Delphi



Добро пожаловать на сайт по игростроению
Пожалуйста pарегистрируйтесь, для того чтобы отписываться в темах

[ Последние сообщения · Форумчане · Правила форума · Поиск ]
  • Страница 1 из 1
  • 1
Модератор форума: Snake  
Ineteger VS Real
Чебурашка Дата: Вторник, 06.07.2010, 16:20 | Сообщение # 1
Специалист
Группа: Администраторы
Сообщений: 221
Репутация: 6
Статус: Offline
В общем-то недавно столкнулся с подобной программой о соответсвии таких типовданных как integer и real.
Вот примерная программа их соответсвия:

Code
Program IandR;
   var a : real;
        b : integer;
        i : byte;
begin
   b := 1;
   a := 0;
   For i := 1 to 10 do a := a + 0,1;
   If a = b then write ('a=b')
              else write ('a<>b');
   Write ('a-b=',a-b);
end.

Вот и как вы думаете, какой будет ответ?!



The next statement is not true.
The previous statement is true.
Flier Дата: Вторник, 06.07.2010, 16:33 | Сообщение # 2
VIP
Группа: Администраторы
Сообщений: 296
Репутация: 7
Статус: Offline
ого

- Прихватив с собой дубину, нанесу визит к админу!
Чебурашка Дата: Вторник, 06.07.2010, 16:34 | Сообщение # 3
Специалист
Группа: Администраторы
Сообщений: 221
Репутация: 6
Статус: Offline
Flier, угу smile вот такие вот пироги! С чем интересно это связано?

The next statement is not true.
The previous statement is true.
Flier Дата: Вторник, 06.07.2010, 16:40 | Сообщение # 4
VIP
Группа: Администраторы
Сообщений: 296
Репутация: 7
Статус: Offline
вообще не знаю. щас проверить не могу, можешь добавить вывод на экран значений а и б после выполнения программы? чему они равны? попробуй еще округлить а.

- Прихватив с собой дубину, нанесу визит к админу!
Flier Дата: Вторник, 06.07.2010, 16:42 | Сообщение # 5
VIP
Группа: Администраторы
Сообщений: 296
Репутация: 7
Статус: Offline
и вообще ответ должен быть числом. судя по последней строке

- Прихватив с собой дубину, нанесу визит к админу!
Чебурашка Дата: Вторник, 06.07.2010, 16:44 | Сообщение # 6
Специалист
Группа: Администраторы
Сообщений: 221
Репутация: 6
Статус: Offline
В ответе там по идее разность около 1,8-13. А если просто выводиь эти числа, то никакого недостатка мы не увидим wink

The next statement is not true.
The previous statement is true.
Flier Дата: Вторник, 06.07.2010, 16:58 | Сообщение # 7
VIP
Группа: Администраторы
Сообщений: 296
Репутация: 7
Статус: Offline
короче аномалия прям какая-то) а мне реал сразу не понравился, не люблю им пользоваться))

- Прихватив с собой дубину, нанесу визит к админу!
vanecki Дата: Вторник, 06.07.2010, 21:38 | Сообщение # 8
Ситх
Группа: Администраторы
Сообщений: 90
Репутация: 2
Статус: Offline
не может ли это быть связано с тем, что a в конце концов будет равно не "1", а "1,00е+Абра-kadabraНепомнюХотьУбей"?

PS А в чем компилировалось?


Чебурашка Дата: Среда, 07.07.2010, 10:36 | Сообщение # 9
Специалист
Группа: Администраторы
Сообщений: 221
Репутация: 6
Статус: Offline
Проверял на BP, там ответ около до -13 степени доходит :)))
проверил на FP, ситуация аналогичная только уже ответ на 1.1-16


The next statement is not true.
The previous statement is true.
vanecki Дата: Среда, 07.07.2010, 12:04 | Сообщение # 10
Ситх
Группа: Администраторы
Сообщений: 90
Репутация: 2
Статус: Offline
На delphi не компилица biggrin

Чебурашка Дата: Среда, 07.07.2010, 12:46 | Сообщение # 11
Специалист
Группа: Администраторы
Сообщений: 221
Репутация: 6
Статус: Offline
Но обычно, когда пишут задачи на паскале проверяют вещественное значение с eps=0,00000001. Проверка на то, что число больше, меньше и т.д.

The next statement is not true.
The previous statement is true.
disable13 Дата: Вторник, 16.11.2010, 02:18 | Сообщение # 12
Новичок
Группа: Форумчанин
Сообщений: 16
Репутация: 0
Статус: Offline
хех... все гораздо проще чем кажеться... такая же борода проявляется с некоторами запросами MySQL.. и объясняется ето тем что в памяти дробное число хранится не в том виде в котором выводиться на экран.. например на
Code

int a = 2;
int b = 2;
float c = a + b;
printf("c is %f", c); // "c is 4"

ето очевидно.. но на самом деле в памяти ето висит в виде 3.99999(9)
плавающая запятая чтоли.. не помню уже. давно ето было..и проблема фиксится чаще всего тупой компиляцией в release ну или снять галочку в настройках компилятора
vanecki Дата: Вторник, 16.11.2010, 18:28 | Сообщение # 13
Ситх
Группа: Администраторы
Сообщений: 90
Репутация: 2
Статус: Offline
Самое курьезное, что такая же "байда" и с инженерными калькуляторами.
  • Страница 1 из 1
  • 1
Поиск:
Game Builder © 2010
Сайт управляется системой uCoz