|
|
|
|
|
|
Теги |
| |
codeserfercom, nbspnbsp, Private, Visual, Возможность, Пример, Рассмотрим, Сегодня, Теперь, будет, данных, значение, который, может, можно, написать, например, очень, переменной, переменных, пользователя, помощью, программа, программирования, программы, просто, работы, разработки, решил, сделать, скрипт, строки, строку, также, только, функции, число, этого, языка, языков
Показать все теги
|
|
|
| |
|
|
|
|
|
|
|
|
| |
Друг показал мне один прикол с переменными, когда выполняются одни и те же арифметические операции, а выдаются разные результаты. #include <stdio.h> int main(void) { float a = 0.123456, b = 0.13;
printf("%.30f\n",(float)((a*b)/b)); printf("%.30f\n",(float)(a*(b/b))); return 0; } Сами подумайте, по законам алгебры переменная b в обоих случаях должна сократиться и остаться только переменная a, значение которой и должно выводиться пользователю. Теперь скомпильте исходник и посмотрите на вывод: 0.123455993831157684326171875000 0.123456001281738281250000000000 Совсем разные числа  Вот в чем прикол! |
|
| |
Что-то не получается? Не понятна какая-то часть кода? Напишите комментарий об этом и мы обязательно Вам все объясним! Обязательно напишите отзыв о программе / учебнике. Для выражения благодарностей есть кнопка:
Своё Спасибо, еще не выражали.
|
| |
| |
Просьбы перезалить в комментариях принимаются |
| |
|
|
| |
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем. |
|
| |
Другие коды по теме: |
|
| |
Нахождение всех совершенных чисел от 1 до nОткрытие CD-ROMОпределяем расширение экрана с помощью WinAPIГалерея изображенийОбращение к WhoIs для IP на PHP |
|
|

|
Написал: ISergey |
|
17 ноября 2009 03:12 | ICQ: --
|
|
| |
Группа: Посетители Регистрация: 7.07.2009 |
Ну так как язык и компилятор не был указан.. то мне Microsoft Visual C++ 2005 выдал такое 0.123456001281738280000000000000 0.123456001281738280000000000000
Intel(R) C++ Compiler тоже самое.. |
|
|
|
| Публикаций: 1 | Комментариев: 10 |
|
|

|
Написал: Codeserfer |
|
17 ноября 2009 16:06 | ICQ: 100105500
|
|
| |
Группа: Администраторы Регистрация: 1.08.2008 |
Я под ggc компиллил в linux |
|
|
|
| Публикаций: 131 | Комментариев: 108 |
|
|

|
Написал: Volk |
|
31 января 2011 14:29 | ICQ: --
|
|
| |
Группа: Посетители Регистрация: 31.01.2011 |
Школота такая школота... А если раз в жизни книжку открыть, и почитать как происходят вычисления с плавающей запятой? Ты не знал что в операциях с плавающей запятой происходит потеря точности? >по законам алгебры... С чего это вдруг твой компьютер знает законы алгебры? Ты его научил? Установи MathCAD или Maxima, пиши скрипты в них, и будет тебе алгебра. Если прекратить страдать хернёй, освоить наконец стандартную Сишную библиотеку вместо ежедневной дрочки на порнуху, подключить limits.h и посматреть пременную FLT_DIG... СЮРПРИЗ! Он посчитал настолько точно, насколько гарантированно операциями с использованием типа float! Хочешь считать точнее - юзай double, блджад! Программа это всегда однозначная последовательность действий, если ты идиот - не вини компьютер или разработчиков компиляторов. Они не виноваты, что разворачивать выражения тебя научили, а на сворачивание мозгов у тебя нехватает. А компилятор перевёл твою программу именно в те инструкции, которые написаны в исходнике. Язык Си вообще всегда отличался тем что они никогда за программиста ничего не делает. Всё что ты пишешь на Си воспринимается компилятором буквально и компьютер именно так как написано будет выполнять. Именно поэтому программы на Си так быстры и отличаются небольшим размером. Конечно если у программиста руки прямые. И именно поэтому криворукие мудаки на нём ничего серьёзного не пишут, потому что немогут. Им Python подавай, там и алгебра есть, и garbage collector для мудаков, которые сами за памятью следить не могут. И операцию xor там тоже знать ненадо для быстрого и каноничного обмена местами переменных (где-то тут рядом есть новость с говнокодом недо-Паскалистов по обмену переменных местами...) ненужен, потому что с длинной математикой вообще не нужно помнить о переполнении, а действия и так со скоростью черепахи производятся. И имено поэтому умение писать хорошие программы на Си есть один из самых показательных критериев профессионализма программиста. И именно поэтому программисты на Паскале и Делфи самые низкооплачиваемые. P.S. Если бы ты поставил Linux не для фаллометрии, а чтобы использовать его хоть и как менее дружественную к пользователю, но потенциально более совершенную OC. И если бы ты учился не по нигам типа "Как выучить С++ за неделю, каждые сутки занимаясь по 16 часов сном и дрочкой", а нормальным серьёзным учбникам, то ты бы хоть раз открыл ман по GCC. Я всю жизнь в виндах просидел, и то знаю, что у GCC очень неплохой оптимизатор и если ты добавишь в командной строке к вызову GCC что-нить типа -o3, то возможно таки он заметит тавтологию в твоём говнокоде и исправит его. Спасибо за внимание. С уважением, и ненавистью за распиздяйство и лень... |
|
|
|
| Публикаций: 0 | Комментариев: 5 |
|
|

© 2008 - 2010. Копирование материалов запрещено! |
|
|