主页 生活
文章详情页

c语言保留两位小数的入门办法

  • 发表于2023-09-29
  • 大家好,我是古榕树小编,这个问题我来为大家进行解答。c语言保留两位小数的入门办法很多人还不知道,现在让我们一起来看看吧!

    小数如何存储

    无论是单精度还是双精度在存储中都分为三个部分:

    符号位(Sign) : 0代表正,1代表为负指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储尾数部分(Mantissa):尾数部分

    其中float的存储方式如下图所示:

    而双精度的存储方式为:

    float和double类型的数据在内存中的保存形式是一样的,只是double表示的范围更大而已。因此,这里只介绍float的表示方法。double同理。

    转换举例

    举例:22.8125 转二进制的计算过程:

    整数部分:除以2,商继续除以2,得到0为止,将余数逆序排列。

    得到22的二进制是10110

    小数部分:乘以2,取整,小数部分继续乘以2,取整,得到小数部分0为止,将整数顺序排列。

    得到0.8125的二进制是0.1101

    结果:十进制22.8125等于二进制00010110.1101

    程序验证

    假设,我现在有一个数据-12.25。那么这个数据在计算机内部是如何存储的呢?首先,将这个浮点数转换成二进制数。经过转换,得到的二进制数为:1100.01。接着,将这个二进制数用科学计数法来表示,1.10001 * 2 ^ 3。由于这个数是负数。所以,符号位为1;指数位为127   3 = 130;尾数(小数)为10001。然后,将指数130转换为二进制数10000010。最后,由于float占4个字节,也就是32位,所以,-12.25在内存中表示为:11000001010001000000000000000000,将这个数用十六进制表示为0xC1440000。那么,我们的计算结果对不对呢?我们可以用程序来验证一下。

    完全正确

      本文标题:c语言保留两位小数的入门办法

      本文链接:https://www.enjoybar.com/blockchain/wz/545897.html

      文章合集

      资讯推荐

      热点资讯

      猜你喜欢