当前位置: 代码迷 >> J2SE >> 有 float toFloat(int x){ return x/65536.0f;},不理解为啥除以65536.0f,请高手解释
  详细解决方案

有 float toFloat(int x){ return x/65536.0f;},不理解为啥除以65536.0f,请高手解释

热度:329   发布时间:2016-04-23 20:02:26.0
有 float toFloat(int x){ return x/65536.0f;},不理解为什么除以65536.0f,请高手解释
有 float  toFloat(int x){ return x/65536.0f;}, 
又有 int toFixed(float x){return (int)(x*65536.0f);}
这样就能从int转换成浮点吗,还是书中代码有错,请解释谢谢,
解释最详细的给80~90分,谢谢
------解决思路----------------------
两个数做算术运算,以精度大的为准的,强制转换成int就是按照int的位数截断数值,所以会有缺失精度的危险
------解决思路----------------------
引用:
有 float  toFloat(int x){ return x/65536.0f;}, 
又有 int toFixed(float x){return (int)(x*65536.0f);}
这样就能从int转换成浮点吗,还是书中代码有错,请解释谢谢,
解释最详细的给80~90分,谢谢


Java中数据类型转换有 自动类型转换 和 强制类型转换;
把取值范围小的类型,转换为取值范围大的数据类型 一般会自动转换;
而从取值范围大的转换成为取值范围小的需要强制转换;

上面这里 x/65536.0 默认是自动会转为double类型,加个f后默认就会自动转为float了;
x*65536.0f默认为float,而float转为int 需要强制转换,于是就加了个(int)来强制转为int型了;
  相关解决方案
本站暂不开放注册!
内测阶段只得通过邀请码进行注册!
 
  • 最近登录:Mon Sep 24 13:57:04 CST 2018
  • 最近登录:Mon Sep 24 13:57:04 CST 2018
  • 最近登录:Mon Sep 24 13:57:04 CST 2018
  • 最近登录:Mon Sep 24 13:57:04 CST 2018
  • 最近登录:Mon Sep 24 13:57:04 CST 2018