茨の道も一歩から

インフラ構築からプログラミング(Python・JavaScript)までITに関するブログです。

Python入門:数値

数値

切り上げ

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'