作业帮 > 综合 > 作业

C语言数据类型有效数字问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/14 01:15:27
C语言数据类型有效数字问题
1.长整型的有效位数是否比double多?如果多,那为什么长整型与double型运算时要一律转换成double?
2.课本里有如下描述----"有如下表达式f=2.45678*4523.65(f为float).系统先把两个数作为双精度数处理,得到的乘积也是双精度的.最后取前七位赋给f.这样会使计算结果更精确,但运算速度降低了.” 这里为什么说会使结果更精确?明明两个数都是可以用float准确存储的嘛,转换为double为什么提高了它的精度?
1、long int 的有效位是32位,double的有效位是15~16位.长整型与double型运算时要一律转换成double的原因是:double所存的数的范围,比long int 要大得多.而且,因为计算机存储方式的原因,整型和浮点型是不能直接运算的.两个小一点的数运算,不论怎么转换,对结果都没有影响,但是如果是一个比较小的数,和一个很大的数运算,当然是省略小的比较精确.
2虽然两个数都能用float 存储,但是他们的结果的有效数字是大于float的存储范围,在运算时只允许结果小于7位的有效数参加运算,也就是说,不是每位数都能参加运算.如果换成double每位数都能参加运算,虽然最后的有效位是一样的,但是精度却提高了.尤其当结果还是一个比较大的数时.