半精度,单精度,双精度--在计算机中使用二进制近似值表示有理数的方式;

浮点数也就是小数点浮动的数,但是因为在计算机中使二进制表示,不同长度有不同的精度。三种常用的浮点数的格式:半精度(float16)、单精度(float32)、双精度(float64)

  • Value=sign*exponent*fraction
  • 数值=符号位*指数位*小数位
  • 符号位表示正负
  • 指数位表示次方
  • 小数位表示精度

区别在于指数位和小数位的长度的差异;这样近似值其实也就是有理数的表示方法;

半精度表示π,最大值和最小值:

javascript 双精度 双精度的数值_数位

   

javascript 双精度 双精度的数值_双精度_02

  

javascript 双精度 双精度的数值_javascript 双精度_03

   

javascript 双精度 双精度的数值_javascript 双精度_04

 

单精度表示π,最大值和最小值:

javascript 双精度 双精度的数值_单精度_05

javascript 双精度 双精度的数值_数位_06

javascript 双精度 双精度的数值_javascript 双精度_07

javascript 双精度 双精度的数值_javascript 双精度_08

javascript 双精度 双精度的数值_javascript 双精度_09

 

双精度表示π,最大值和最小值:

javascript 双精度 双精度的数值_单精度_10

javascript 双精度 双精度的数值_单精度_11

javascript 双精度 双精度的数值_单精度_12

javascript 双精度 双精度的数值_双精度_13

javascript 双精度 双精度的数值_javascript 双精度_14

Bfloat16

最近还诞生了一种Bfloat16的计数方式,使用和半精度相同的位数,实现了保持和单精度一样的指数位也就是8位指数位,可以表示和单精度相同的数字范围,但是牺牲了小数位也就是精度。

javascript 双精度 双精度的数值_单精度_15

 

javascript 双精度 双精度的数值_数位_16

javascript 双精度 双精度的数值_数位_17

 

 

参考文献:

http://evanw.github.io/float-toy/

https://en.wikichip.org/wiki/brain_floating-point_format


 

 

 

 


万事走心 精益求美