何をsys.float_info.epsilon
返しますか?
私のシステムでは、次のようになります。
>>> sys.float_info.epsilon
2.220446049250313e-16
>>> sys.float_info.epsilon / 2
1.1102230246251565e-16
>>> 0 < sys.float_info.epsilon / 2 < sys.float_info.epsilon
True
これはどのように可能ですか?
編集:
あなたは大丈夫です、私は epsilon が min と同じことをすると思っていました。だから私は実際に意味しsys.float_info.min
ました。
EDIT2
皆さん、特に John Kugelman さん、ご回答ありがとうございます。
自分自身に物事を明確にするために、いくつか遊んでいました:
>>> float.hex(sys.float_info.epsilon)
'0x1.0000000000000p-52'
>>> float.hex(sys.float_info.min)
'0x1.0000000000000p-1022'
>>> float.hex(1 + a)
'0x1.0000000000001p+0'
>>> float.fromhex('0x0.0000000000001p+0') == sys.float_info.epsilon
True
>>> float.hex(sys.float_info.epsilon * sys.float_info.min)
'0x0.0000000000001p-1022'
したがってepsilon * min
、最小の正の仮数 (または仮数) と最小の指数を持つ数値が得られます。