У меня есть приложение, написанное на Microsoft Visual C++ 6.0. Теперь я переписал приложение в Visual Studio 2010 с помощью C#, но результаты не совпадают из-за проблем с точностью. Одной из таких проблем точности является следующая.
float a = 1.0f;
float b = 3.0f;
float c = a / b;
Это код C# при запуске в Visual Studio 2010 дает значение c
= 0.333333343
Но тот же код, удаляющий f после значения в определении значения, при выполнении на Visual C++ 6.0 дает значение c = 0.333333
.
Может ли кто-нибудь разобраться и объяснить, как получить одинаковое значение для c в Visual Studio, а также в Visual C++ 6.0 ??
На самом деле значения берутся из окна просмотра. Я узнал, что разные версии Visual Studio могут отличаться в представлении формата с плавающей запятой. Следовательно, значения в часах могут быть бесполезны. По этой причине я напечатал значения в обеих версиях Visual Studio, и результаты следующие. с Visual Studio 6.0 с использованием языка Visual C++ это 0,333333 (шесть троек)
но с Visual Studio 10 с использованием языка С# это 0,3333333 (семь троек)
Так может ли кто-нибудь помочь мне заставить мою программу на С# давать тот же результат, что и визуальный С++??? (т.е. как я могу выполнять плавающие операции для получения одинаковых результатов в обеих версиях???)
double
за кулисами), но методы отображения числа пользователю различаются, поэтому вы можете просто смотреть на разные значения по умолчанию для отображения. - person Mr Lister   schedule 15.12.2011float
диапазона и точности (выделение добавлено). Таким образом, закулисная точность определяется реализацией. .NET Framework вполне может использовать двойников за кулисами. - person phoog   schedule 28.12.2011