python:如何获得小数点后的数字?

我如何获得小数点后的数字?

例如,如果我有5.55

我如何得到.55

一个简单的方法给你:

 number_dec = str(number-int(number))[1:] 
 5.55 % 1 

请记住,这不会帮助你浮点舍入问题。 即,您可能会得到:

 0.550000000001 

或者你想要的0.55。

使用modf :

 >>> import math >>> frac, whole = math.modf(2.5) >>> frac 0.5 >>> whole 2.0 

关于什么:

 a = 1.3927278749291 b = a - int(a) b >> 0.39272787492910011 

或者,使用numpy:

 import numpy a = 1.3927278749291 b = a - numpy.fix(a) 

使用标准库中的decimal模块,可以保持原始精度并避免浮点舍入问题:

 >>> from decimal import Decimal >>> Decimal('4.20') % 1 Decimal('0.20') 

正如注释中的所有注释,你必须首先将本地float转换为string。

尝试模数:

 5.55%1 = 0.54999999999999982 
 import math orig = 5.55 whole = math.floor(orig) # whole = 5.0 frac = orig - whole # frac = 0.55 

例:

导入math

x = 5.55

打印((math.floor(X * 100)%100))

这将会给你两个小数点后的数字,从这个例子中是55。 如果你需要一个数字,你可以减less10以上的计算或增加,取决于小数点后你想要的数字。

使用floor并从原始数中减去结果:

 >> import math #gives you floor. >> t = 5.55 #Give a variable 5.55 >> x = math.floor(t) #floor returns t rounded down to 5.. >> z = t - x #z = 5.55 - 5 = 0.55 
 >>> n=5.55 >>> if "." in str(n): ... print "."+str(n).split(".")[-1] ... .55 

这是我尝试的解决scheme:

 num = 45.7234 (whole, frac) = (int(num), int(str(num)[(len(str(int(num)))+1):])) 

关于什么:

 a = 1.234 b = a - int(a) length = len(str(a)) round(b, length-2) 

输出:
print(b)
0.23399999999999999
round(b, length-2)
0.234

由于循环被发送到小数点('0.234')的长度,所以我们可以减去2来不计数“0”,并计算出所需的小数点数。 这应该工作多数时间,除非你有很多小数位和计算时的舍入误差b干扰圆的第二个参数。

另一个疯狂的解决scheme是(不用转换string):

 number = 123.456 temp = 1 while (number*temp)%10 != 0: temp = temp *10 print temp print number temp = temp /10 number = number*temp number_final = number%temp print number_final