📜  单精度和双精度之间的区别(1)

📅  最后修改于: 2023-12-03 15:22:49.463000             🧑  作者: Mango

单精度和双精度之间的区别

介绍

计算机中常用的数值类型有单精度(float)和双精度(double)。

单精度在内存中占用4个字节(32位),能够精确表示6-7位有效数字,范围为-3.4E383.4E38

双精度在内存中占用8个字节(64位),能够精确表示15-16位有效数字,范围为-1.7E3081.7E308

区别
  1. 精度不同:单精度精度为6-7位有效数字,而双精度精度为15-16位有效数字。
  2. 占用内存不同:单精度占用4个字节(32位),而双精度占用8个字节(64位)。
  3. 范围不同:单精度的范围为-3.4E383.4E38,而双精度的范围为-1.7E3081.7E308
示例
#include <stdio.h>

int main() {
  float fnum = 1.11111111111111111111111111111111f;
  double dnum = 1.11111111111111111111111111111111;
  
  printf("Single precision: %f\n", fnum);
  printf("Double precision: %lf\n", dnum);
  
  return 0;
}

输出结果为:

Single precision: 1.111111
Double precision: 1.1111111111111112

可以看出,双精度的输出结果更加精确。同时,需要注意在使用单精度时应指定为float类型,而双精度不需要。