Black_mirror Да вот не для всех, похоже. Моя студия по крайней мере показывает следующее: Код (Text): unsigned long long i = 0x20000000000002; double a = i; double b = a + 1; printf("%f %f", a, b); На выходе: 9007199254740994.000000 9007199254740996.000000
Black_mirror Да ну Вы что? Просто проверять, не превышает ли число 2^53. Дальше они всё равно все чётные. Ну и не стоит забывать, что приоритет & ниже приоритета == .
l_inc Печально, если округление идёт к бесконечности можно конечно проверять числа на нечётность, то есть ксорить x и (x-1), правда в этом случае отдельное сравнение придётся делать не только для нуля, но и для единицы. А нелогичность приоритета операций в Си меня опять удивила, вот где куча лишних скобочек, а не в Lisp'e как думают некоторые.
Зачем округление? У Вас классный вариант. Ну пара дополнительных проверок: на неравенство нулю и принадлежность интервалу от -2^53 до +2^53. [offtop]Недавно наткнулся на Ваш старый bmp-фрактал на фасме. Был под таким впечатлением, что побежал показывать первому попавшемуся, кем оказалась мама. Её скептическая реакция на мою восторженную рожу: "Ну укроп, и шо?"[/offtop]
Squash Может все проще - раз речь идет о первом курсе, то вначале изучили работу с целыми, в т.ч. и определение их четности по Odd(), mod и and. Затем перешли к вещественным, узнали о Round, Trunc, Frac и т.п. Отсюда и эта "притянутая за уши" задачка по использованию Frac PS: А вообще для помощи в решении "школьных" задачек по паскалю есть спец-форумы, например раздел Pscal на forum.sources.ru