C语言中float与double基本变量的问题

为什么float不能储存精确的数值进去,而int可以
比如 float num = 10000000.00
再使用 %f,num 时,输出的可能是10002323.....
用double为什么更精确了?
最新回答
温茶

2024-11-29 11:59:34

float 32位:

  • 符号 1 

  • 精度 23 (二进制23位 对应到 10进制 差不多 7位,但不是绝对的)

  • 指数 8


int 32位:

  • 符号 1

  • 精度 31

  • 但是 没法表示 很大和很小的数,float 是科学计数法,虽然精度不高,但能表达的范围更大


double 64位:

  • 可以理解为是 float 的增强版,精度和指数都 用更多位 表示了

xx最喜欢先生了

2024-11-29 13:33:24

float 为单精度32位,而double为双精度64位