日期:2014-05-20  浏览次数:20678 次

java小程序中的奇怪问题
package BangBean;

public class CastingNumbers {[code=Java][/code]
public static void main(String[] args){
double above=1.7,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));
}
}
打印的结果为:
above:1.7
below:0.4
(int)above:1
(int)below:0
(char)('a'+above):b
(char)('a'+below):a
为什么会打印出b呢?

------解决方案--------------------
System.out.println("(char)('a'+above):"+(char)('a'+above));
首先计算‘a’+above = 98.7
转为char为‘b’

------解决方案--------------------
探讨
System.out.println("(char)('a'+above):"+(char)('a'+above));
首先计算‘a’+above = 98.7
转为char为‘b’