jer*_*jer 164
5.55 % 1
Run Code Online (Sandbox Code Playgroud)
请记住,这不会帮助您解决浮点舍入问题.即,你可能得到:
0.550000000001
Run Code Online (Sandbox Code Playgroud)
或者稍微偏离你期望的0.55.
Ant*_*y V 141
使用modf:
>>> import math
>>> frac, whole = math.modf(2.5)
>>> frac
0.5
>>> whole
2.0
Run Code Online (Sandbox Code Playgroud)
Jim*_*som 50
关于什么:
a = 1.3927278749291
b = a - int(a)
b
>> 0.39272787492910011
Run Code Online (Sandbox Code Playgroud)
或者,使用numpy:
import numpy
a = 1.3927278749291
b = a - numpy.fix(a)
Run Code Online (Sandbox Code Playgroud)
int*_*ted 31
使用decimal
标准库中的模块,您可以保留原始精度并避免浮点舍入问题:
>>> from decimal import Decimal
>>> Decimal('4.20') % 1
Decimal('0.20')
Run Code Online (Sandbox Code Playgroud)
作为kindall 笔记的意见,你就必须转换本土float
第一个为字符串.
lll*_*kke 24
一个简单的方法:
number_dec = str(number-int(number))[1:]
Run Code Online (Sandbox Code Playgroud)
import math
orig = 5.55
whole = math.floor(orig) # whole = 5.0
frac = orig - whole # frac = 0.55
Run Code Online (Sandbox Code Playgroud)
类似于接受的答案,使用字符串更简单的方法是
def number_after_decimal(number1):
number = str(number1)
if 'e-' in number: # scientific notation
number_dec = format(float(number), '.%df'%(len(number.split(".")[1].split("e-")[0])+int(number.split('e-')[1])))
elif "." in number: # quick check if it is decimal
number_dec = number.split(".")[1]
return number_dec
Run Code Online (Sandbox Code Playgroud)
要使其适用于正数和负数:尝试 abs(x)%
. 对于负数,没有 with abs
,它会出错。
5.55 % 1
输出 0.5499999999999998
-5.55 % 1
输出 0.4500000000000002