числа с плавающей точкой. равно ли 2.0 и 2?
Может, ключевое слово было "некоторые"? Или оптимизация не включена (если она опциональна. попробуй -О3 вроде, если нет, то man gcc)
ты путаешь sqr и sqrt
Я не путаю, и дело не в этом 

А в чём? Вижу разницу тока в типах, но ясно-понятно, что имелось ввиду double
2.0 не равно 2, и 2^2.0 не равно sqr(2) (которое, в свою очередь, вроде как, необязательно равно 4).
Как по-твойму записываются чилса с плавающей запятой?
хочу тебя огорчить, 2.0 равно 2
я бы больше беспокоился, что pow(x, 1.0/3) != cbrt(x)
Но, думается cbrt(x) в таких случаях всегда лучше отражает желаение программиста (то бишь, хотел он именно кубического корня, в не возведения в степень 1.0/3)
К тому же разница вряд ли сильно ощутится.
Но, думается cbrt(x) в таких случаях всегда лучше отражает желаение программиста (то бишь, хотел он именно кубического корня, в не возведения в степень 1.0/3)
К тому же разница вряд ли сильно ощутится.
Числа ведь хранятся не как x*(2^y 1<=x<2, а как x*(e^y 1<=x<e, y целое 

понятие "экспонента" в записи чисел с плавающей точкой означает не e^blabla 

и чему равно e?
Уж точно не двойке.
А что означает?
хорошо, начнем с того, что ты понимаешь под:
> Числа ведь хранятся
где хранятся?
> Числа ведь хранятся
где хранятся?
В памяти
правильно, не двойке.
так чему же оно равно?
так чему же оно равно?
Магической константе e 
Говорят, она где-то между двойкой и тройкой... но это всё только слухи, а своими глазами её никто никогда не видел...

Говорят, она где-то между двойкой и тройкой... но это всё только слухи, а своими глазами её никто никогда не видел...
мне вот компутер выдал число
1.5е3
это сколько?
1.5е3
это сколько?
Он тебе перевёл в десятичную систему счисления...
Бля, ладно, уговорили, e=2.
а не 10? 

Пипец 
Раньше число Е продавали отдельно и называли микросхему с ним "сопроцессор"
На самом деле там просто в еепроме было вшито число
Как видно из п2шных постов, не зная этого числа нельзя считать плавающую арифметику
Поэтому без этого сопроцессора она не работала
Сейчас времена не те, и FPU встраивают в проц. Но все равно, отдельным блоком!
Самые крутые производители не жадничают и хранят 2048 знаков числа Е
Всякие transmeta и via халявят, у них в FPU всего 1024 знака
вот

Раньше число Е продавали отдельно и называли микросхему с ним "сопроцессор"
На самом деле там просто в еепроме было вшито число

Как видно из п2шных постов, не зная этого числа нельзя считать плавающую арифметику
Поэтому без этого сопроцессора она не работала
Сейчас времена не те, и FPU встраивают в проц. Но все равно, отдельным блоком!
Самые крутые производители не жадничают и хранят 2048 знаков числа Е
Всякие transmeta и via халявят, у них в FPU всего 1024 знака
вот

найди в гугле описание формата чисел с плавающей точкой, которым оперирует ia-32 (как минимум)
и все сразу станет ясно
и все сразу станет ясно
уговорили, ![[math][res=150]$$e=2\pm10$$[/math]](mathimg.php?math=[res%3D150]%24%24e%3D2%5Cpm10%24%24)
Не 10, а 8 

гоню 

Точнее, не 8, а 4.
И не 2, а 6.

И не 2, а 6.

короче,
http://steve.hollasch.net/cgindex/coding/ieeefloat.html
E=10 (имеется ввиду запись при станд выводе)
хранится все как степени двойки,
IEEE 754 наиболее распространен в реализациях fp.
http://steve.hollasch.net/cgindex/coding/ieeefloat.html
E=10 (имеется ввиду запись при станд выводе)
хранится все как степени двойки,
IEEE 754 наиболее распространен в реализациях fp.
ну, это очень строгая оценка, а я сделал скидку на будущие, еще неизвестные нам системы, вдруг советская пищущая машинка станет прообразом новой, 12-ричной вычислительной машинищи?
Бля, пенартур, не пиши сюда больше.
А то я умру от смеха.
А то я умру от смеха.
отличная ссылка.
буду студентам давать.
буду студентам давать.
На этот тред тоже давай 

ок, поиск по ключевым словам:
уговорили, e=2.
уговорили, e=2.
И еще вот эту ссылку не помешает.
Пенартур милый, он приносит нам радость!
>милый
ахтунг!
ахтунг!
до контры ему далеко, но он успешно осваивает освободившуюся нишу... дело контры живо!
Неее!
Контра был круче!
Споров подобную фигню он
а) попытался бы перевести разговор на какую-нибудь слабо связанную тему, в контексте которой его утверждение уже не было бы однозначно ложным (например, на какую-нибудь кроссплатформенность, где Всё Может Быть Не Так).
б) когда кто-нибудь через сотню постов припёр бы его к стенке и заставил вернуться к оригинальному утверждению, он некоторое время туманно порассуждал бы о том, что все люди делают ошибки, и, наконец, упрекнул бы оппонента в том, что тот тупой или троллит, потому что и так понятно, что то утверждение неверно.
Контра был круче!
Споров подобную фигню он
а) попытался бы перевести разговор на какую-нибудь слабо связанную тему, в контексте которой его утверждение уже не было бы однозначно ложным (например, на какую-нибудь кроссплатформенность, где Всё Может Быть Не Так).
б) когда кто-нибудь через сотню постов припёр бы его к стенке и заставил вернуться к оригинальному утверждению, он некоторое время туманно порассуждал бы о том, что все люди делают ошибки, и, наконец, упрекнул бы оппонента в том, что тот тупой или троллит, потому что и так понятно, что то утверждение неверно.
А ещё Контра всё-таки был умней намного и иногда говорил интересные вещи!
в языках со строгой типизацией 2.0 и 2 нельзя просто так сравнивать, потому что это объекты РАЗНЫХ типов.
Можно попробовать привести один тип к другому и тогда уже о чем-то говорить.
Кстати, в общем случае, для чисел с плавающей точкой не существует операции проверки равенства.
Вместо неё применяется попадание одной точки в окрестность (задаваемую программистом) другой.
Можно попробовать привести один тип к другому и тогда уже о чем-то говорить.
Кстати, в общем случае, для чисел с плавающей точкой не существует операции проверки равенства.
Вместо неё применяется попадание одной точки в окрестность (задаваемую программистом) другой.
Плюсы - это язык с нестрогой типизацией.
так что на равенство сравнивать можно.
студенты даже придумывают такие крокодилы:
ибо
выдаёт warning, а в дисплейных классах на ММ в компиляторе включен флажок "threat warnings as errors", который не отключается. посему из исходника с варнингами экзешника не получается. вот и изгаляются.
так что на равенство сравнивать можно.
студенты даже придумывают такие крокодилы:
if(x<=y && x>=y) ...
ибо
if(x==y) ..
выдаёт warning, а в дисплейных классах на ММ в компиляторе включен флажок "threat warnings as errors", который не отключается. посему из исходника с варнингами экзешника не получается. вот и изгаляются.
if(x==y) ..лучше бы писали if(fabs(x-y)<1e-6) или что-то типа
/usr/bin/gcc
я так делал. Правда, уже на 3-м курсе.
я так делал. Правда, уже на 3-м курсе.
выдаёт warning, а в дисплейных классах на ММ в компиляторе включен флажок "threat warnings as errors", который не отключается. посему из исходника с варнингами экзешника не получается. вот и изгаляются.#pragma warning (disable : xxxx)

В GCC такой прагмы, на сколько мне известно, нет.
PS Лично я считаю, что пока преподы не соберут все программы (в том числе ядро которые стоят в этих классах с этим флагом, они не имеют морального права мучить этим студентов.
PS Лично я считаю, что пока преподы не соберут все программы (в том числе ядро которые стоят в этих классах с этим флагом, они не имеют морального права мучить этим студентов.
Единственный напряг с этими ворнингами это "No new line at the end of file". Остальные ворнинги разумны по своей природе. И вообще ненормально писать a == b для float/double.
в GCC можно эти ворнинги выключить в командной строке (-w)
PS Лично я считаю, что пока преподы не соберут все программы (в том числе ядро которые стоят в этих классах с этим флагом, они не имеют морального права мучить этим студентов.Студент существо ленивое и глупое. И само не будет включать -Wall -Werror. А зря. Поэтому преподы включат сами.
Оставить комментарий
kruzer25
А ничего, что pow(x, 2.) не равно sqr(x)?