为什么c语言中的数值可以保留两个小数位数?

如题所述

C是这样定义单精度数据的——

共有32二进制位,1位符号位+8位阶码(小数点要移动的位数)+23位尾数:

    最高位是符号位,1表示负数,0表示正数。这里-2.5,所以取1。

    接着是8位阶码,阶码用移码表示,最高位为符号,0表负、1表正;单精度要在原值上+127实现,即加01111111。

    把尾数原码接着写在后面,无限小数写够23位即可。注意原码都要化成以1打头(就是小数点移到第一个有效1之后,恢复时小数点应该向哪个方向移几位由阶码表示),并把小数点前面的1省写即可。

对于-2.5具体是这样转换的:

求尾数:2.5的二进制原码是10.1,变成1.01并省去小数点前面的1为01,01就是尾数。

求阶码:由1.01恢复为10.1小数点要向右移一位,所以阶码符号为1(正)、移值为0000001;0000001+1111111=10000000。这就是-2.5的阶码。

求全码:1+10000000+01-->11000000 00100000 00000000 00000000——后面的0是补上的,因为小数点后的0实际无数学意义,但C中要补齐32位。最后11000000 00100000 00000000 00000000这个数就是-2.5的格式化表达。

不知你问的是不是这个意思。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-12-22
C语言中并没有这种说法,这是楼主对C语言得误解