在python中将数字拆分为整数和小数部分
有没有把数字1234.5678分成两部分(1234,0.5678),即整数部分和小数部分的pythonic方法?
import math x = 1234.5678 math.modf(x) # (0.5678000000000338, 1234.0)
我们可以使用一个不着名的内置函数; divmod:
>>> s = 1234.5678 >>> i, d = divmod(s, 1) >>> i 1234.0 >>> d 0.5678000000000338
>>> a = 147.234 >>> a % 1 0.23400000000000887 >>> a // 1 147.0 >>>
如果你想整数部分作为一个整数而不是一个浮点数,使用int(a//1)
。 (int(a//1), a%1)
编辑:请记住, 浮点数的小数部分是近似的 ,所以如果你想表示它是一个人会做的,你需要使用小数库
intpart,decimalpart = int(value),value-int(value)
适用于正数。
这个变体允许获得所需的精度:
>>> a = 1234.5678 >>> ( lambda x, y : ( int( x ), int( x * y ) % y / y ) )( a, 1e0 ) (1234, 0.0) >>> ( lambda x, y : ( int( x ), int( x * y ) % y / y ) )( a, 1e1 ) (1234, 0.5) >>> ( lambda x, y : ( int( x ), int( x * y ) % y / y ) )( a, 1e15 ) (1234, 0.5678)
这也适用于我
>>> val_int = int(a) >>> val_fract = a - val_int
这是我做的方式:
num = 123.456 split_num = str(num).split('.') int_part = int(split_num[0]) decimal_part = int(split_num[1])