числа с плавающей точкой. равно ли 2.0 и 2?
Может, ключевое слово было "некоторые"? Или оптимизация не включена (если она опциональна. попробуй -О3 вроде, если нет, то man gcc)
ты путаешь sqr и sqrt
Я не путаю, и дело не в этом
А в чём? Вижу разницу тока в типах, но ясно-понятно, что имелось ввиду double
2.0 не равно 2, и 2^2.0 не равно sqr(2) (которое, в свою очередь, вроде как, необязательно равно 4).
Как по-твойму записываются чилса с плавающей запятой?
хочу тебя огорчить, 2.0 равно 2
Но, думается cbrt(x) в таких случаях всегда лучше отражает желаение программиста (то бишь, хотел он именно кубического корня, в не возведения в степень 1.0/3)
К тому же разница вряд ли сильно ощутится.
Числа ведь хранятся не как x*(2^y 1<=x<2, а как x*(e^y 1<=x<e, y целое
понятие "экспонента" в записи чисел с плавающей точкой означает не e^blabla
и чему равно e?
Уж точно не двойке.
А что означает?
> Числа ведь хранятся
где хранятся?
В памяти
так чему же оно равно?
Говорят, она где-то между двойкой и тройкой... но это всё только слухи, а своими глазами её никто никогда не видел...
1.5е3
это сколько?
Он тебе перевёл в десятичную систему счисления...
Бля, ладно, уговорили, e=2.
а не 10?
Раньше число Е продавали отдельно и называли микросхему с ним "сопроцессор"
На самом деле там просто в еепроме было вшито число
Как видно из п2шных постов, не зная этого числа нельзя считать плавающую арифметику
Поэтому без этого сопроцессора она не работала
Сейчас времена не те, и FPU встраивают в проц. Но все равно, отдельным блоком!
Самые крутые производители не жадничают и хранят 2048 знаков числа Е
Всякие transmeta и via халявят, у них в FPU всего 1024 знака
вот
и все сразу станет ясно
уговорили,
Не 10, а 8
гоню
И не 2, а 6.
http://steve.hollasch.net/cgindex/coding/ieeefloat.html
E=10 (имеется ввиду запись при станд выводе)
хранится все как степени двойки,
IEEE 754 наиболее распространен в реализациях fp.
ну, это очень строгая оценка, а я сделал скидку на будущие, еще неизвестные нам системы, вдруг советская пищущая машинка станет прообразом новой, 12-ричной вычислительной машинищи?
А то я умру от смеха.
буду студентам давать.
На этот тред тоже давай
уговорили, e=2.
вот эту ссылку не помешает.
И еще
Пенартур милый, он приносит нам радость!
ахтунг!
до контры ему далеко, но он успешно осваивает освободившуюся нишу... дело контры живо!
Контра был круче!
Споров подобную фигню он
а) попытался бы перевести разговор на какую-нибудь слабо связанную тему, в контексте которой его утверждение уже не было бы однозначно ложным (например, на какую-нибудь кроссплатформенность, где Всё Может Быть Не Так).
б) когда кто-нибудь через сотню постов припёр бы его к стенке и заставил вернуться к оригинальному утверждению, он некоторое время туманно порассуждал бы о том, что все люди делают ошибки, и, наконец, упрекнул бы оппонента в том, что тот тупой или троллит, потому что и так понятно, что то утверждение неверно.
А ещё Контра всё-таки был умней намного и иногда говорил интересные вещи!
Можно попробовать привести один тип к другому и тогда уже о чем-то говорить.
Кстати, в общем случае, для чисел с плавающей точкой не существует операции проверки равенства.
Вместо неё применяется попадание одной точки в окрестность (задаваемую программистом) другой.
так что на равенство сравнивать можно.
студенты даже придумывают такие крокодилы:
if(x<=y && x>=y) ...
ибо
if(x==y) ..
выдаёт warning, а в дисплейных классах на ММ в компиляторе включен флажок "threat warnings as errors", который не отключается. посему из исходника с варнингами экзешника не получается. вот и изгаляются.
if(x==y) ..лучше бы писали if(fabs(x-y)<1e-6) или что-то типа
я так делал. Правда, уже на 3-м курсе.
выдаёт warning, а в дисплейных классах на ММ в компиляторе включен флажок "threat warnings as errors", который не отключается. посему из исходника с варнингами экзешника не получается. вот и изгаляются.#pragma warning (disable : xxxx)
PS Лично я считаю, что пока преподы не соберут все программы (в том числе ядро которые стоят в этих классах с этим флагом, они не имеют морального права мучить этим студентов.
Единственный напряг с этими ворнингами это "No new line at the end of file". Остальные ворнинги разумны по своей природе. И вообще ненормально писать a == b для float/double.
в GCC можно эти ворнинги выключить в командной строке (-w)
PS Лично я считаю, что пока преподы не соберут все программы (в том числе ядро которые стоят в этих классах с этим флагом, они не имеют морального права мучить этим студентов.Студент существо ленивое и глупое. И само не будет включать -Wall -Werror. А зря. Поэтому преподы включат сами.
Оставить комментарий
kruzer25
А ничего, что pow(x, 2.) не равно sqr(x)?