Próbuję zrozumieć, dlaczego za pomocą „/” z long double w następujący sposób prowadzi do wartości 0.000000 podczas gdy ten sam kod z podwójnie nieUżywając "/" z długim podwójnym?
double d = (double)total_results/(double)total_points;
daje wartość 0.785403 ale
long double d = (long double)total_results/(long double)total_points;
Podaje wartość 0.000000. Próbuję uzyskać najdokładniejsze wartości dla
EDIT „TOTAL_RESULTS/total_points”: w końcu błąd był po prostu, że jestem wyprowadzanie go za pomocą „% f” zamiast „% LF”
Przed
printf("Running on %d thread(s), results is %f.\n", NUM_THREADS, d);
Po
printf("Running on %d thread(s), results is %Lf.\n", NUM_THREADS, d);
co platforma/kompilatora? – CharlesB
Jakie są typy total_results i total_points? Casting ich do 'długi double' może zmienić dostępnego wartość w niewłaściwy sposób – Eregrith
to działa na mnie w C++ –