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

Popular posts from this blog

ios - iPhone/iPad different view orientations in different views , and apple approval process -

java Extracting Zip file -

C# WinForm - loading screen -