黑马程序员技术交流社区

标题: 关于运算中损失精度的问题。。。求高手,求详解 [打印本页]

作者: ts5210ts    时间: 2016-9-14 23:54
标题: 关于运算中损失精度的问题。。。求高手,求详解
整型运算中,long类型和float类型一起运算时,long类型会默认转换给float类型进行运算。那么问题来了   
  ,long类型是8个字节,float类型是4个字节,默认转换为什么不会损失精度呢?
作者: 世之小卒    时间: 2016-9-15 10:44
这个上课老师有讲吧
作者: mawenliang    时间: 2016-9-15 11:02
他们的存储放肆不同啊!
作者: a869588615    时间: 2016-9-15 11:32
long使用4个字节存储,但因为也是整数,其中最高位是符号位,所以最大值只有2的63次方-1;float使用4个字节存储,一共32位,其中第1位是符号位,接下来8位用来表示指数,剩下的23位用来表示尾数,用8位表示指数,范围是-127~128次方,远远高于long的63次方,即float的精度比long高,所以在转换的时候不会损失精度。
作者: Jerry007    时间: 2016-9-15 11:40
老师说的,小数和整数的存储不一样的.float存储范围远远大于long类型
作者: a869588615    时间: 2016-9-15 11:40
a869588615 发表于 2016-9-15 11:32
long使用4个字节存储,但因为也是整数,其中最高位是符号位,所以最大值只有2的63次方-1;float使用4个字节 ...

说的有些不清楚了,是long的最大值就是2的63次方-1,float的最大值为3.40E+38。
作者: 灵动    时间: 2016-9-15 13:35
我只能说是底层运算结构不同!
作者: 请叫我大山    时间: 2016-9-15 13:48
自己计算一下float和long的范围就知道了,如果在深入点,就是内存分配不同,分符号位、指数为和小数位,有兴趣可以研究一下。




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