时间:2023-09-09 07:15:59来源:
C语言里对应float单精度类型的数据在输出时可以精确到小数点后面6位小数。
关于float丢失精度
当float类型的一个数的整数部分特别大时,如4399670.00在计算时,这个数只保留两位小数,此时,这个数参加运算时,就会丢失小数级别的精度。
0.15,0.25会被当做0.00。
这是因为整数部分太长,float只占4个字节所造成的。
此时,把计算相关的类型换成double即可。
float型数据的有效数字是6~7位
C语言中浮点型一般分为float单精度型、double双精度型、longdouble长精度型,单精度浮点型小数点后面有效数字为6~7位和双精度浮点型小数点后面有效数字为15~16位。
单精度为32位,双精度为64位,8位为一个字节。
由这个浮点数在内存中的长度决定double是64位,占8字节,float32位,占4字节,所以double的精度比float高在一个浮点数里,由阶码和尾数2部分表示,与科学计数法类似,但是它的阶不是10,而是2,也就是说浮点数的表示是尾数*2^阶码阶码决定了浮点数的范围,尾数决定了浮点数的精度,尾数是永远在0~1之间的,假设一个浮点数的尾数是1101011,阶码是101,那么实际上表示的数就是0.1101011*2^101这里的数都是二进制的,要先转换成10进制,然后再求值去看下计算机组成原理吧..
C语言中,单精度浮点型为float,双精度浮点型为double。
Float为单精度,内存中占4个字节,有效数位是7位(因为有正负,所以不是8位),在我的电脑且VC++6.0平台中默认显示是6位有效数字。
double为双精度,占8个字节,有效数位是16位,但在我的电脑且VC++6.0平台中默认显示同样是6位有效数字。
float是单精度浮点数类型,可以表示的数值范围为-2^128~+2^128。
所以,它当然可以是负值。