数値
切り上げ
a = 17 b = 3 (a+b-1) // b # 6
import math math.ceil(1.2) #2
切り捨て
import math math.floor(1.2) #1
小数点以下n桁目で四捨五入
round(3.14159, 3) # 3.142 round(1251, -2) # 1300
round(1250, -2) # 1200
商と余りを取得する
a = 5 b = 4 divmod(a, b) # (1, 1)
整数部と小数部を取得する
import math f = 3.1415 math.modf(f) # (0.14150000000000018, 3.0)
小数点以下が0か判定
f = 2.0 f.is_integer() # True f = 2.2 f.is_integer() # False
平方根(ルート)
import math x = 2 math.sqrt(x) # 1.4142135623730951
指数
x = 2 x ** 0.5 # 1.4142135623730951
対数
import math math.e # 2.718281828459045 math.log(math.e) # 1.0 math.log10(100) # 2.0 math.log(100, 10) # 2.0
角度
import math theta = math.pi/2 math.degrees(theta) # 90.0 theta = 90 math.radians(theta) # π/2 -> 1.5707963267948966
基数変換
10進数→16進数
hex(28) # '0x1c' '%#x' % 28 # '0x1c' '%x' % 28 # '1c'
10進数→8進数
oct(28) # '034' '%#o' % 28 # '034' '%o' % 28 # '34'
10進数→2進数
bin(28) # '0b11100' format(28, 'b') # '11100' format(28, '8b') # ' 11100' format(28, '08b') # '00011100'
16進数→10進数
int('0x1c', 16) # 28 int('1c', 16) # 28
8進数→10進数
int('034', 8) # 28 int('0o34', 8) # 28 int('34', 8) # 28
2進数→10進数
int('0b11100', 2) # 28 int('11100', 2) # 28
8桁の16進数を2桁毎→10進数
i = 0 offset = 2 hex_num = format(60000, '08x') nums = [] while i < len(hex_num): nums.append(int(hex_num[i:i+offset], 16)) i += offset print(nums) byte_nums = bytearray(nums)
高精度(Decimal)
from decimal import * f1 = Decimal('0.1') f2 = Decimal('0.2') str(f1 + f2) '0.3'