Float 16-bit

IEEE 754有一個半精度的浮點數,叫Half-precision floating-point format
通訊的時候數值的部分常會用到,因為他是最小的浮點數,好用

Go的float16 package

我有一個專案有用到這個
https://github.com/x448/float16
不錯用,推推

online float16 calculator

要做確認的時候還是會需要計算一下,查到這個網站
https://oletus.github.io/float16-simulator.js/
好用推推
其中預設的數值(1bit的sign + 5bit的exponent + 10bit的mantissa)就是IEEE 754的標準

演算法

這裡有篇paper在講float32跟float16的雙向轉換,提供了一般的演算法跟使用查表的演算法
好文章推推
以下我把一般的演算法複製過來:

Float16 to Float32 (half-float to float)

f = ((h&0x8000)<<16) | (((h&0x7c00)+0x1C000)<<13) | ((h&0x03FF)<<13)

Float32 to Float16 (float to half-float)

h = ((f>>16)&0x8000)|((((f&0x7f800000)-0x38000000)>>13)&0x7c00)|((f>>13)&0x03ff)