Float a = 1.2;
有一个错误,因为它将十进制作为double值,double是一个比float更大的数据类型.
现在,它将整数作为默认的int类型.那么,为什么以下代码没有给出任何错误?
Byte b = 20;
解决方法
A narrowing primitive conversion from
doubletofloatis governed by the IEEE 754 rounding rules (07001). This conversion can lose precision,but also lose range,resulting in afloatzero from a nonzerodoubleand afloatinfinity from a finite double. AdoubleNaN is converted to afloatNaN and adoubleinfinity is converted to the same-signedfloatinfinity.A narrowing conversion of a signed integer to an integral type T simply discards all but the n lowest order bits,where n is the number of bits used to represent type T. In addition to a possible loss of information about the magnitude of the numeric value,this may cause the sign of the resulting value to differ from the sign of the input value.
另见this thread.