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