我编写了一个程序,将数字相除然后返回数字,但问题是当它返回数字时,它有一个小数,如下所示:
2.0
但我希望它能给我:
2
那么我可以这样做吗?
您可以致电
int()
了解最终结果:
>>> int(2.0)
2
你可能可以像下面这样做
# p and q are the numbers to be divided
if p//q==p/q:
print(p//q)
else:
print(p/q)
有一个数学函数
modf()
也可以解决这个问题。
import math
print("math.modf(3.14159) : ", math.modf(3.14159))
将输出一个元组:
math.modf(3.14159) : (0.14159, 3.0)
如果您想保留整数部分和小数以供参考,例如:
decimal, whole = math.modf(3.14159)
>>> int(2.0)
您将得到答案2
def division(a, b):
return a / b if a % b else a // b
if val % 1 == 0:
val = int(val)
else:
val = float(val)
这对我有用。
工作原理:如果 val 与 1 的商余数为 0,则 val 必须是整数,因此可以将其声明为 int,而不必担心丢失小数。
比较这两种情况:
答:
val = 12.00
if val % 1 == 0:
val = int(val)
else:
val = float(val)
print(val)
在这种情况下,输出是 12,因为 12.00 除以 1 余数为 0。根据这些信息,我们知道 val 没有任何小数,我们可以将 val 声明为 int。
乙:
val = 13.58
if val % 1 == 0:
val = int(val)
else:
val = float(val)
print(val)
这次输出是 13.58,因为 val 除以 1 时有余数(0.58),因此 val 被声明为浮点数。
仅将数字声明为 int(不测试余数)小数将被截断。
这样最后就没有零了,除了零之外不会有其他的被忽略。
Python中有4种去除小数位的方法,
>>> number = 2.0
>>> number
2.0
>>> number = int(2.0)
2
>>> type(number)
<class 'int'>
>>> import math
>>>
>>> number = 2.0
>>> number
2.0
>>> number = math.trunc(2.0)
2
>>> type(number)
<class 'int'>
请注意:- 本部分返回的所有内容均为
str
类型。
使用
%d
占位符格式化字符串
>>> number = 2.0
>>> number
2.0
>>> number = '%d'%number
>>> number
'2'
>>> type(number)
<class 'str'>
>>> number = 2.0
>>> number
2.0
>>> number=str(number).split('.')[0]
>>> number
'2'
>>> type(number)
<class 'str'>
>>> number = 2.0
>>> number
2.0
>>> number = round(number)
>>> number
2
>>> type(number)
<class 'int'>
参考资料:-
如果您使用 pandas,您可以使用 .astype(int) 来转换系列。 dataframe['列名'] = (列名).astype(int)
int() 和 math.trunc 不适用于系列数据类型。