1. ホーム
  2. python

[解決済み] Pythonにおけるint()の直感的でない動作

2023-05-30 23:34:54

疑問点

に明記されています。 ドキュメント には、int(number)が床置き型変換であることが明記されています。

int(1.23)
1

で、int(string)は、stringが整数リテラルである場合にのみ、intを返します。

int('1.23')
ValueError

int('1')
1

何か特別な理由があるのでしょうか?私は、あるケースでは関数の床が、他のケースでは床がないことが直感に反していると思います。

どのように解決するのですか?

このような場合 特別な の理由はありません。Pythonは暗黙の変換を行わないという一般的な原則を適用しているだけで、PerlやJavascriptなどの言語では、特に初心者が問題を起こす原因としてよく知られているものです。

int(some_string) は文字列を整数形式に変換する明示的なリクエストです。この変換のルールは、文字列が有効な整数リテラル表現を含んでいなければならないと定めています。 int(float) は浮動小数点数を整数に変換する明示的なリクエストです。この変換のルールは、浮動小数点数の部分が切り捨てられることを指定しています。

のために int("3.1459") を返すために 3 を返すには、インタプリタは文字列を暗黙のうちに float に変換しなければなりません。Pythonは暗黙の変換をサポートしないので、代わりに例外を発生させることを選択します。