前提・実現したいこと
他にもたくさん小数の計算を行っているですが、何故かここの計算だけ指数になるので、全て今後一切、指数にならないようにしたいです。
発生している問題・エラーメッセージ
FXの通貨ペアで、円との組み合わせの場合は、0.01を、違う場合は0.0001を返すメソッドを作成しました。
引数に入れる通貨ペアは、USD_JPY、EUR_USDのように3文字とアンダーバーです。
該当のソースコード
実際には、計算等の処理を行いますが、状況説明の為にprintだけしています。
python
1 2def getPips(pair): 3 if pair[4:7] == "JPY": 4 return 0.01 5 else: 6 return 0.0001 7 8print(getPips("USD_JPY")) 9結果>0.01
python
1pair_list = ["AUD_CAD", "AUD_CHF", "AUD_JPY", "AUD_NZD", "AUD_USD", "CAD_JPY", "CHF_JPY", "EUR_AUD", "EUR_CAD", 2 "EUR_CHF", "EUR_GBP", "EUR_JPY", "EUR_USD", "GBP_AUD", "GBP_CAD", "GBP_CHF", "GBP_JPY", "GBP_NZD", 3 "GBP_USD", "NZD_JPY", "NZD_USD", "USD_CAD", "USD_CHF", "USD_JPY" 4 ] 5 6 7for pair in pair_list: 8 print(getPips(pair)*0.5) 9 10結果> 115e-05 125e-05 130.005 145e-05 155e-05 160.005 170.005 185e-05 195e-05 205e-05 215e-05 220.005 235e-05 245e-05 255e-05 265e-05 270.005 285e-05 295e-05 300.005 315e-05 325e-05 335e-05 340.005 35
試したこと
いろいろなところをfloat()で試しましたがダメでした。
Decimalで桁を丸める方法もありますが、指数になることがおかしいので、根本的な解決をしたいです。
補足情報(FW/ツールのバージョンなど)
Python 3.7.6
pycharm 2020.2
何がダメであり、何をどのように解決したいのかを具体的に記載ください。
ちなみに「指数になる」のはあくまでprintした結果であり、値はfloatのままです。
回答2件
あなたの回答
tips
プレビュー