Re[13]: Смерть булевским аргументам!
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 12.09.09 20:45
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Я вообще не понимаю, с чем ты споришь.

J>Твой аргументы аналогичны "для возведения в степень есть страшные формулы, вот и давайте юзать их, а то, что для возведения в степени двойки есть чудесная операция битового сдвига — тем хуже для нее" :xz:
J>ЗЫ Сейчас посмотрел историю — спор с этим аргументом затеял не ты, а netch80 — ну, значит, последний комментарий предназначается ему :shuffle:

Ты гонеш, кросавчег (tm)
Я утверждал совсем не это, а то, что

1) градусы удобны для выделения случая "кратно 90" (как и ты), но при этом не обязательно требовать их целочисленности, если эти кратные 90 значения явно сгенерированы

2) переводить в градусы только ради градусов смысла нет

3) в задаче автопилота точность значений вообще дальше третьего знака нереальна
Как из этого можно сделать вывод, что я предлагаю отказаться от простых путей, где они есть, и начать намеренно усложнять — я не знаю. Наверно, для этого нужен какой-то особый скилл неадекватных выводов:)

А остальное — возражения на отдельные утверждения, которые при в общем правильной общей мысли загоняют её в какие-то крайне нелепые стороны. Если ты из возражений на отдельные частные утверждения делаешь вывод о том, что я тебе тотально противоречу — что ж, придётся повторить вывод про "особый скилл" ;))

J>Насчет значений с плавающей запятой — есть радикальная разница в представлении 180 и M_PI: 180 всегда представлена точно, а пи так представлена быть не может в принципе, и ты всегда будешь иметь дело с обрезаниями.


Угу. Только вот я для проверки аккуратности плавучки нарисовал маленький кусочек кода:

  double v1 = M_PI;
  double v2 = asin(1) * 2;
  double v3 = acos(-1);
  printf("%30.25g %30.25g %30.25g\n", v1, v2, v3);
  printf("v1%sv2 v2%sv3 v3%sv1\n",
    (v1==v2)?"=":"!=", (v2==v3)?"=":"!=", (v3==v1)?"=":"!=");


и как ты думаешь, что он мне выдал? он мне выдал все три равенства. Фря/7.2/i386.

Так что несмотря на то, что ты прав в общем — слишком легко нарваться на "тепличный" случай, когда можно даже на равенство сравнивать.

J>Т.е. если у тебя в программе есть поле ввода, откуда ты читаешь число с плавающей запятой, то 180 всегда будет точно 180 (буду рад услышать аргументацию, почему оно не может быть таковым), а вот с пи тебе придется туго.

J>Естественно, если ты над этими 180 будешь потом изгаляться, в результате у тебя в общем случае получится не точно 180, но если ты берешь как есть — оно будет точным, и в этом нет никакой разницы с целыми числами.
J>Поправь меня, если это не так.

Ну кто бы спорил, я подтвержу. Только это не единственный вывод, который тут можно и нужно делать.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.