pythonのint(float(で型変換しても小数点以下が.00になる

投稿者: Anonymous

python(boto3)を用いて、csvデータをdynamodbへインポートする前に型変換を行っております。

int(float(を用い、3.88のような小数点2桁の数値を、型変換行っているのですが、
どうしても、小数点2桁を切り捨てるような形になってしまいます。

インポート前(3.88)インポート後(3.00)

このような場合、どう対処して変換を行えばよいでしょうか?

解決

変換を行っているソースコードはどうなっていますか?

int(float(csvの何かの値の文字列))というのが本当ならfloat()で文字列を浮動小数点数に変換したとしても、その外側のint()の部分で整数に変換しているので、小数点以下部分を切り捨てるという正当な結果だと思われます。

浮動小数点数の値が必要なら、外側のint()は外してfloat()だけで変換しましょう。

あるいは、変換は必要なのでしょうか? 使われているというboto3やdynamodb自身にそうした指定のオプションがあるか探した方が良いかもしれません。
浮動小数点数への変換は表現誤差の問題が付きまとうので、なるべくなら変換しない方が良いかもしれません。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *