cpp-浮点数

比较

if (fabs(m1 - m2) < DBL_EPSILON)
{
//相等
}

精度

ref.

以一个四字节整数int n;为例,一共有32位,取值范围是 [-2147483648‬, 2147483647] ,一共是4,294,967,296种可能

float 7位小数精度 使用 4 字节存储
double 16位小数精度 使用 8 字节存储

float的存储正是将4字节32位划分为了3部分来分别存储正负号,小数部分和指数部分的:

  • Sign(1位):用来表示浮点数是正数还是负数,0表示正数,1表示负数。
  • Exponent(8位):指数部分。即上文提到数字c,但是这里不是直接存储c,为了同时表示正负指数以及他们的大小顺序,这里实际存储的是c+127。
  • Mantissa(23位):尾数部分。也就是上文中提到的数字b。
20200603_092245.png 20200603_092308.png