short在java中是2字节,而int是4字节类型,你把一个int型的数据转化到一个short,就有可能出项精度丢失。
如果你的int型数据值大于short的最大或者最小表示范围就会发生的。
如你的int为100000,而short的表示范围为(-32768---32767)

解决方案 »

  1.   

    我想这是对的,因为float和double的存储方式和int、long不一样,他们是通过有效数字+指数来存储的,而int和long的所有位置都用来存储的是有效数字,所以在转换的时候会可能因为有效数字的长度造成一定的精度丢失,当然前提是那个int或long型的数很大。

    123456789012345678在long里存的就是123456789012345678
    而在double里要存成1234567890123456*10^2据我所知,double最大的有效数字位数好象是16位,超过16位就自动转成科学记数法截掉了。