Resultado do casting duplo para int está errado

Parece haver algum tipo de erro de arredondamento obscuro quando executo o seguinte código:

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

InicialmentePriorityJob = 1.4 eroundedTotal é indefinido. AvaliandoPriorityJob * 100.0 nesse ponto dá140. DepoisroundedTotal = 139.

Aparentemente, o 140.0 está sendo interpretado como 139.99999. Isso é uma deficiência no mecanismo de ponto flutuante? Eu nunca vi nada assim.

questionAnswers(1)

yourAnswerToTheQuestion