LoginSignup
8
2

More than 5 years have passed since last update.

Python3で整数の最大値や小数の無限大を扱いたい

Last updated at Posted at 2018-03-04

Python3で整数型の最大値はsys.maxsizeとして定義されています(URL: https://docs.python.jp/3/library/sys.html#sys.maxsize )。たとえばC言語風のforループがサポートされている言語で、以下のように書く処理があるとします。

for (int i = 1; ; i++) {
    if (isOK(i)) {
        break;
    }
    do_someting(i);
}

これと同じ処理をPython3で実装する、かつforrangeを利用する場合は、以下のようになるはずです。

import sys

for i in range(1, sys.maxsize):
    if is_ok(i):
        break
    do_something(i)

sys.maxsizeを利用しない場合は次のような書き方になりますが、iのインクリメント(i += 1)を忘れて大変な目にあいがちなので、個人的には好きではありません(´・ω・`)

i = 1
while not is_ok(i):
    do_something(i)
    i += 1

わたしの思いつく限り、Python3でよく利用される数値型としては以下のものがあげられます。

  • float
  • decimal.Decimal
  • fractions.Fraction

floatDecimalについては「無限大」がサポートされています。「最大値」も取得できなくはないようですが、基本的には「無限大」で事足りるように思います。

import decimal

float('inf')
float('infinity')
decimal.Decimal('inf')
decimal.Decimal('infinity')

fraction.Fractionsは有理数を扱うクラスです。その性質から「最大値」や「無限大」という概念はサポート外になっているようです(´・ω・`)

8
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2