Двойное умножение на 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, но не смог найти причину. Извините, если вопрос тривиален.