El resultado de lanzar doble a int es incorrecto

Parece que hay algún tipo de error de redondeo oscuro cuando ejecuto el siguiente código:

int roundedTotal = (int)(PriorityJob * 100.0);

InicialmentePriorityJob = 1.4 yroundedTotal es indefinido. EvaluandoPriorityJob * 100.0 en ese punto da140. DespuésroundedTotal = 139.

Aparentemente, 140.0 se interpreta como 139.99999. ¿Es esta una deficiencia en el motor de punto flotante? Nunca he visto nada igual.

Respuestas a la pregunta(1)

Su respuesta a la pregunta