A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zero727 中级黑马   /  2013-4-30 23:08  /  1538 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zero727 于 2013-5-1 09:27 编辑

float  double 之间的转化

        如果在出现小数时候,没有特殊的指定默认double,需要float就必须明确指定某个小数位float
        float f 88.90f
这两具体的迷糊了,求指点!
认真学习  吼吼!

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 求索!!

查看全部评分

5 个回复

倒序浏览
单精度,float 在内存中占了4个字节,32个二进制位。取值范围在1.4013E-45~3.4028E+38“E表示十的多少次方”
双精度。double 在内存中占了8个字节,64个二进制位。取值范围在4.9E-324~1.7977E+308
JVM默认的是double类型, 如果是float类型要用”L“(建议用大写,小写有时候和1难区分)
回复 使用道具 举报
float  double 之间的转化

数据类型的转换一般分为隐含转换和强制转换两种:
(1)隐含转换
     当类型不一致时要进行隐含转换,原则是将低类型转化成高类型(类型越高数据精度越高,double>float>long >int>short>char>)这种转化是电脑自动完成,是安全的,数据精度没有损失。
条件一:转换前的数据类型与转换后的类型兼容
条件二:转换后的数据类型的表示范围比转换前的类型大

class DateDemo
{
public static void main(String[] args)
{
  int x=30;   //定义整型变量
  float y=22.19f;  //定义浮点型变量
  System.out.println("x/y="+(x/y));//除法操作
        System.out.println("10/3.5="+(10/3.5));//直接使用常量进行除法
  System.out.println("10/3="+(10/3));//直接使用常量进行除法
   }
}

/* 程序运行结果:
x/y=1.3519603
10/3.5=2.857142857142857
10/3=3
*/



(2)强制转换一般涉及到将高类型转化成低类型时使用,不安全,可能损失精度。
格式:
   (要转换的数据类型)变量名称;

class DateDemo
{
public static void main(String[] args)
{
  
  float y=30.3f;  //定义浮点型变量
        int x=(int)y;  //强制转换为int型
  System.out.println("x="+x);//输出转型之后的值
        
  System.out.println("10/3="+(float)(10/3));//常量计算使用强制类型转换
   }
}
/* 程序运行结果:
x=30
10/3=3.0
*/

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
回复 使用道具 举报
曹睿翔 发表于 2013-5-1 07:15
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢

哇   大侠们回答的好详细啊  谢谢
回复 使用道具 举报
电玩 发表于 2013-4-30 23:41
float  double 之间的转化

数据类型的转换一般分为隐含转换和强制转换两种:

膜拜,好详细的,谢谢  已经明白啦!好好学习~:P
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马