Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2011, 18:22   #1
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию проблема с элементарным математическим действием

День добрый. Я незнаю, может у меня со зрением что то не то, но все-таки...


Как так вообще? Может кто-нибудь сталкивался?
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 16.09.2011, 18:36   #2
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Все правильно считает. Пересчитайте на калькуляторе.
K=m[0,0]*S=0.14*0,99154865839 =-0,1388168121746
L=m[1,0]*C=1.07*0.12973533848 = 0,1388168121736
B_axye=K+L=-0,1388168121746+0,1388168121736=0.0 000000000010
Сложите K и L и получите B_axye, приблизительно равную нулю.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 16.09.2011, 18:42   #3
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Да я разве спорю? Суть то в том, что k и l отличаются только знаком, далее считаем сумму, результат = 2,7755575616e-17. Если бы там ноль получался, то я бы не стал спрашивать.

Кстати, на фото процесс сложения уже осуществлен.

В общем, если кому интересно. Решил дебильным (иначе не скажешь) способом: перед суммой поставил
Код:
k:=strtofloat(floattostr(k)); 
l:=strtofloat(floattostr(l));
Я так понимаю изначально значения были "не так сильно равны, как хотелось бы", а перегон в строку их уравнял.
Все тривиальное просто

Последний раз редактировалось Stilet; 17.09.2011 в 08:42.
whatever вне форума Ответить с цитированием
Старый 16.09.2011, 23:04   #4
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Интересно вы переменные обзываете!
Хотелось бы прочитать ваши комменты в тех проектах, которые сложно поддаются разработке и отладке.
*PB* вне форума Ответить с цитированием
Старый 16.09.2011, 23:41   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию


я в таких случаях для понимания происходящих процессов обычно рекомендую ознакомиться:


статья Антона Григорьева "Неочевидные особенности вещественных чисел"

Загадки округления

p.s. вообще-то, Вы получили число:
2,7755575616e-17 если записать его в более привычном виде,
получаем 0.000000000000000027755575616
согласитесь, что это число ОЧЕНЬ близко к нулю.

В Вашем случае достаточно будет использовать функции округления Round() или RoundTo()
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.09.2011, 16:34   #6
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Serge_Bliznykov, благодарю, такой ответ мне и нужен был.

*PB* эта хитровыдуманая переменная на самом деле даже не требуется, ввел просто для того, чтобы слева в отладчике было проще увидеть значение. А эмоциональность связана с тем, что k и l в том же отладчике имеют одинаковые по модулю значения. Входные данные я не из головы брал, поэтому думал, что так и есть, проверить вручную не догадался.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать класс, являющийся трехмерным математическим вектором. fafa2010 Помощь студентам 1 25.06.2010 10:03
Нужна программа на C# с математическим численным методом iFluid Общие вопросы .NET 2 23.06.2010 13:16
Моделирование движения тела под действием силы тяжести AleSS Помощь студентам 11 27.01.2010 16:03
Моделирование движения тела под действием силы тяжести AleSS Помощь студентам 0 26.01.2010 16:45
Сопоставление математическим формулам их названий Ghost_V Помощь студентам 0 17.12.2009 21:55