C语言程序设计问题:关于单精度和双精度输出位数问题……
发布网友
发布时间:2023-07-11 15:50
我来回答
共2个回答
热心网友
时间:2024-01-17 23:02
32位环境printf的%f和%lf都是double,没有单精度的输出。
%f的默认小数位数就是6位不管有没有l。
是float直接从十进制数字转换来的情况下十进制可靠有效数字是7位。float的有效数字永远是二进制24位。
热心网友
时间:2024-01-17 23:02
32位浮点数的有效地址是7位十进制数,取值范围为10的负38次方到10的正38次方,64位浮点数的有效数字是15位十进制数,取值范围是10的负308次方到10的正308次方。不同的计算机可能会有一些差别。
在标准C语言中,浮点数有单精度浮点数(float)和双精度浮点数(double)两种,有的C版本还支持第三种长双精度浮点数(long double)。
单精度浮点数的类型说明符是float,双精度浮点数的类型说明符是double。
单精度浮点数和双精度浮点数两者在计算机上的表示方式是非常相似的,只是所占的二进制位数不同。因此,单精度浮点数的有效数字(或称精度)和取值范围与双精度浮点数不同。在Visual C++ 6.0中,单精度浮点数和双精度浮点数分别占32位和64位。
参考资料:C语言程序设计