Long Division in Java not working as expected -
class longdiv{ public static void main(string [] args){ final long x = 24*60*60*1000*1000; final long y = 24*60*60*1000; system.out.println(x/y); } } although expected answer 1000, javac gives 5. reason?
the long x creating isn't value expected. in integer range. create longs, use:
final long x = 24l*60l*60l*1000l*1000l; final long y = 24l*60l*60l*1000l; system.out.println(x/y); the x computed, in integer range, 500654080. divided y ( = 86400000), results in 5.794607407407407.... java truncates decimal part causes 5.
by adding l after number literal, tell compiler compile long instead of int. value x expected 86400000000. compiled int.
we can reproduce wrong value x (500654080) truncating int:
// first correct long x = 24l*60l*60l*1000l*1000l; /* x = `86400000000`; */ // truncate x &= 0xffffffffl; // again: don't forget l suffix /* x = `500654080` */
Comments
Post a Comment