浮動小数点数
floating point number
有効数字のようなもの
浮動小数点数とは - IT用語辞典 e-Words
符号
+は0
-は1
仮数
指数部から分離した値
指数
基数(2進法なら$ 10_{(2)})を何乗したか
0は便宜上+0.0*10^0
IEEE 754方式
半精度 16bit
単精度 32bit
倍精度 64bit
4倍精度 128bit
太字はよく使われる
例
10.625を単精度浮動小数点数で表す
2進法で表現
10.625 -> $ 1010.101_{(2)}
符号 0
1.xxxの形に直す
1.010101*2^3
指数
バイアスを足す
3 + 127 = 130
2進法になおすと8bitの1000010
仮数
冒頭の1は自明なので省略
ゼロ埋めする
010101 00000000000000000
結果
code:output
0 1000010 01010100000000000000000
0.1や0.2は二進数で無限小数になるため厳密には表せない
浮動小数点数の比較
math.isclose
code:py
import math
def is_close(a, b, tol=1e-9):
return math.isclose(a, b, abs_tol=tol)
print(is_close(0.2 + 0.1, 0.3)) # True