java之类型转换

转载请注明出处

http://blog.csdn.net/pony_maggie/article/details/43908165

 

 作者:小马

 

看一段代码

public class CastingNumbers 
{

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		for(int i = 0; i < 100; i++)
		{
			char c = (char)(Math.random()*26 + 'a');
			System.out.print(c + " ");
			
			
		}
		
		System.out.println("");
		
		double above = 0.7;
		double below = 0.4;
		
		System.out.println("above: " + above);
		System.out.println("below: " + below);
		
		System.out.println("(int)above: " + (int)above);
		System.out.println("(int)below: " + (int)below);
		
		System.out.println("(char)('a' + above): " + (char)('a' + above));
		System.out.println("(char)('a' + below): " + (char)('a' + below));

	}

}


 

Math.random()产生一个[0,1)的随机数,double类型,然后转成char类型。这里就会产生一个问题,比如说,Math.random()*26得到29.7这个值,那么最终的结果是30+'a'还是29+'a'呢?

 

上面代码的输出结果也可以得出结论,

above: 0.7
below: 0.4
(int)above: 0
(int)below: 0
(char)('a' + above): a
(char)('a' + below): a


说明从float或double转成int或char类型时,总是"截断"的。

 

你可能感兴趣的:(java,转换,类型,截断)