Я пытаюсь понять, почему использование «/» с длинным двойным следующим образом приводит к значению 0,000000, а тот же код с двойной неИспользование '/' с длинным двойным?
double d = (double)total_results/(double)total_points;
дает значение 0.785403 но
long double d = (long double)total_results/(long double)total_points;
Дает значение 0.000000. Я пытаюсь получить наиболее точное значение
EDIT «total_results/total_points»: В конце концов ошибка была просто, что я выводящий его с помощью «% F» вместо «% Lf»
Перед
printf("Running on %d thread(s), results is %f.\n", NUM_THREADS, d);
После
printf("Running on %d thread(s), results is %Lf.\n", NUM_THREADS, d);
какая платформа/компилятор? – CharlesB
Каковы типы total_results и total_points? Приведение их к 'long double' может неправильно изменить доступное значение – Eregrith
Это работает для меня на C++ –