結果を0.0000005(type(float))にしたいのですが
5.000000000005e-07
5e-07
になってしまいます
数値と数字(数字文字列)の違いが理解できていません。0.0000005
と5e-07
は数学的な意味、および、Pythonのfloatの値としてはで同一です。区別できません。
文字列の"0.0000005"
と"5e-07"
はもちろん異なります。
Python
1x = 0.00000052y = 5e-73print( x==y ) #=> True4x = "0.0000005"5y = "5e-7"6print( x==y ) #=> False
0.0000005
や5e-07
のfloat型数値は内部では、1000110111101101101101011010000011110111110001101010000000111110
のような2進数の列です。
これでは人間が見ても分からないので、print()
するとよしなに10進数で文字列化して表示してくれます。.7f
や.0e
のように変換書式を指定することで文字列の形式を指定する事も出来ます。print()
が使うデフォルトの文字列変換は、ある範囲の数は固定小数点表記で、範囲外は浮動小数点表記でという機能であす。
Python
1print(0.005) #=> 0.005 固定小数点表記2print(0.0005) #=> 0.0005 固定小数点表記3print(0.00005) #=> 5e-05 浮動小数点表記4print(0.000005) #=> 5e-06 浮動小数点表記
「数値」と、「数値を文字列化した物」を区別しましょう。
0 コメント