在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])