Двойное умножение на 100, а затем приведение к длинному дает неправильное значение

У меня есть следующий код:

Double i=17.31;
long j=(long) (i*100);
System.out.println(j);

O / P:1730 //Expected:1731

Double i=17.33;
long j=(long) (i*100);
System.out.println(j);

O / P:1732 //Expected:1733

Double i=17.32;
long j=(long) (i*100);
System.out.println(j);

O / P:1732 //Expected:1732{As expected}

Double i=15.33;
long j=(long) (i*100);
System.out.println(j);

O / P:1533 //Expected:1533{as Expected}

Я пытался Google, но не смог найти причину. Извините, если вопрос тривиален.

Ответы на вопрос(6)

Ваш ответ на вопрос