java - Typecasting Different Types into One Type -
long 64-bit signed two's complement integer. long 128-bit signed two's complement integer? wanted confirm before proceeding.
long l = 6; int = 4; integer ii = 2; l += (l/i) * ii; i wondering need typecast in order 3, instead of 2.
i tried following:
l += (long) (((double) l/i) * ii); when typecast l/i double, 1, instead of 1.5?
lets typecast long, largest number long, (long), happen since long 64-bit signed two's complement integer.
long (lower case) primitive type 64-bit integer. long (upper-case) reference type (object) wraps long (lower-case). long's encode data in long , hence 64-bit well. if want > 64-bit precision, java.math.biginteger offers arbitrarily high precision.
your problem not come incorrect casting within division statement cast long @ end:
l += (long) (((double) l/i) * ii); ^ here the result of (((double) l/i) * ii) double of value 3.0. due peculiarities of floating-point arithmetic, becomes 2 when cast long.
in order solve this, use math.round instead of typecast:
l += math.round(((double) l/i) * ii);
Comments
Post a Comment