JAVA里让两个long类型的数相加得到的结果有问题

import java.math.BigDecimal;
public class Number1
{
	static void main()
	{
		long b=90000000000L;
		long a=60000000000L;
		BigDecimal add = new BigDecimal(a).add(new BigDecimal(b));
		System.out.println(add.longValue());
	}
}

public class Number1
{
	static void main()
	{
		long b=90000000000L;
		long a=60000000000L;
		long add=a+b;
		System.out.println(add);
	}
}

public class Number1
{
	static void main()
	{
		long b=90000000000L;
		long a=60000000000L;
		long add=(long)a+(long)b;
		System.out.println(add);
	}
}

上面三个代码跑出来都说1.2

想问问怎么回事ne

都是150000000000呀