黑马程序员技术交流社区

标题: java新手,请大侠们指点下 [打印本页]

作者: zero727    时间: 2013-4-30 23:08
标题: java新手,请大侠们指点下
本帖最后由 zero727 于 2013-5-1 09:27 编辑

float  double 之间的转化

        如果在出现小数时候,没有特殊的指定默认double,需要float就必须明确指定某个小数位float
        float f 88.90f
这两具体的迷糊了,求指点!
认真学习  吼吼!
作者: 施祖喜    时间: 2013-4-30 23:37
单精度,float 在内存中占了4个字节,32个二进制位。取值范围在1.4013E-45~3.4028E+38“E表示十的多少次方”
双精度。double 在内存中占了8个字节,64个二进制位。取值范围在4.9E-324~1.7977E+308
JVM默认的是double类型, 如果是float类型要用”L“(建议用大写,小写有时候和1难区分)

作者: 电玩    时间: 2013-4-30 23:41
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
*/

作者: 曹睿翔    时间: 2013-5-1 07:15
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
作者: zero727    时间: 2013-5-1 09:28
曹睿翔 发表于 2013-5-1 07:15
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢

哇   大侠们回答的好详细啊  谢谢
作者: zero727    时间: 2013-5-1 09:29
电玩 发表于 2013-4-30 23:41
float  double 之间的转化

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

膜拜,好详细的,谢谢  已经明白啦!好好学习~:P




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2