I have the code
int twelve = 12;
int five = 5;
float y = (float)twelve / 5;
var e = (float)((float)twelve / (float)five) == y; // true
var f = ((float)twelve / (float)five) == y; // false
var g = ((float)twelve / (float)five) == 2.4; // true
var h = ((float)twelve / (float)five) == 2.4F; // false
var i = ((float)12 / (float)5) == 2.4F; // true
and I cannot understand why f
and h
are false
.
Can somebody explain what exactly is happening here?
Same Java code seems more predictable
int twelve = 12;
int five = 5;
float y = (float)twelve / 5;
boolean e = (float)((float)twelve / (float)five) == y; // true
boolean f = ((float)twelve / (float)five) == y; // true
boolean g = ((float)twelve / (float)five) == 2.4; // false
boolean h = ((float)twelve / (float)five) == 2.4F; // true
boolean i = ((float)12 / (float)5) == 2.4F; // true