请教一个问题,关于浮点数的

来源:百度知道 编辑:UC知道 时间:2024/04/30 10:19:42
现在在做习题,
看到对于浮点数,有float和double,
我知道他们的取值范围和精度不一样,
但是看书上,对于同一类程序。
有时候用float,有时候用double,
想问问,float和double究竟有什么区别?

单精度浮点数在机内占4个字节,用32位二进制描述。
双精度浮点数在机内占8个字节,用64位二进制描述。

浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。
数符占1位二进制,表示数的正负。
指数符占1位二进制,表示指数的正负。
尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点
指数存指数的有效数字。

指数占多少位,尾数占多少位,由计算机系统决定。
可能是数符加尾数占24位,指数符加指数占8位 -- float.
数符加尾数占48位,指数符加指数占16位 -- double.

知道了这四部分的占位,按二进制估计大小范围,再换算为十进制,就是你想知道的数值范围。

对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位。
但double消耗内存是float的两倍,double的运算速度比float慢得多,
C语言中数学函数名称double 和 float不同,不要写错,
能用单精度时不要用双精度(以省内存,加快运算速度)。

就是精度的区别,在精度允许范围内 用他们两个谁都可以

当然,从计算机内部表示来看 double 占用的内存更多(是float的一倍)

之就像你有两个书包 一个大一个小 ,有时候装同一个东西你却轮换着用你的书包一样