Я работаю над проектом, в котором я должен взаимодействовать между управляемым кодом и неуправляемым кодом. В настоящее время у меня странная проблема с math.h.
Некоторые функции с плавающими числами будут возвращать 0 (например: 2.1219957934356005e-314) и случайным образом...
Например:
int error = 0;
int success = 0;
for (int i = 0; i < 1000; ++i)
{
double test = std::sqrt(9.01);
if (test < 2 || test > 4)
{
++error;
}
else
{
++success;
}
}
Обычно я получаю ошибку = 1000 с точками останова, я повторяю попытку несколько раз и снова получаю 1000 ошибок и несколько раз я получаю 1000 успехов...
Ничего плохого в разборке и в регистрах не вижу (кроме плохого результата).
Для контекста: этот код скомпилирован в dll для 64 бит и используется C#. Это приложение действительно многопоточное.
Есть идеи?