Замучился уже. Помогите! Всю жизнь (а точнее лет как 10) программировал на C++ и спокойно выслушивал крики "нового поколения программистов" про эффективность .NET. Вот решил "опробовать". Написал уже большой кусок кода, при отладке наткнулся:
VisualStudio в окне Watch издевательски показывает, что hbs1 — (radius1 + x1) должно быть 0.000000023841857821338408. На старом добром С++ все считается верно. В чем проблема?!
Здравствуйте, max-megahertz, Вы писали:
MM>Коллеги, MM>Замучился уже. Помогите! Всю жизнь (а точнее лет как 10) программировал на C++ и спокойно выслушивал крики "нового поколения программистов" про эффективность .NET. Вот решил "опробовать". Написал уже большой кусок кода, при отладке наткнулся:
MM>tx2 = 0.0 MM>VisualStudio в окне Watch издевательски показывает, что hbs1 — (radius1 + x1) должно быть 0.000000023841857821338408. На старом добром С++ все считается верно. В чем проблема?! MM>VisualStudio, если это существенно 2005.
MM>tx2 = 0.0
MM>VisualStudio в окне Watch издевательски показывает, что hbs1 — (radius1 + x1) должно быть 0.000000023841857821338408. На старом добром С++ все считается верно. В чем проблема?!
может быть здесь дело все в кривых именах переменных?
Здравствуйте, _FRED_, Вы писали:
_FR>Здравствуйте, max-megahertz, Вы писали:
MM>>Коллеги, MM>>Замучился уже. Помогите! Всю жизнь (а точнее лет как 10) программировал на C++ и спокойно выслушивал крики "нового поколения программистов" про эффективность .NET. Вот решил "опробовать". Написал уже большой кусок кода, при отладке наткнулся: _FR>
MM>>tx2 = 0.0 MM>>VisualStudio в окне Watch издевательски показывает, что hbs1 — (radius1 + x1) должно быть 0.000000023841857821338408. На старом добром С++ все считается верно. В чем проблема?! MM>>VisualStudio, если это существенно 2005.
_FR>Неправда Ваша, у меня вот так (78,3 KB)
Мдааа.. В чистом проекте и правда посчиталось нормально... Ну тогда извиняйте, наверно мой косяк. Попробую найти или хотя-бы реализовать повторяемость на "чистом листе"...
Первое. Double в Net 8-байтовый. У него выделено 51 бит на мантиссу(чуть больше 15 символов). Соответсвенно, если у вас больше 15 символов, то информация теряется.
Второе. В том коде — все нормально. Символы как были double, так и остаются double (спецификация). Соответсвенно, либо у вас в коде ошибка, либо в дебаггере. Попробуйте дополнительно задать D в константах.