Python:删除除法小数

问题描述 投票:0回答:9

我编写了一个程序,将数字相除然后返回数字,但问题是当它返回数字时,它有一个小数,如下所示:

2.0

但我希望它能给我:

2

那么我可以这样做吗?

python decimal division
9个回答
73
投票

您可以致电

int()
了解最终结果:

>>> int(2.0)
2

36
投票

当数字为小数时,在 Python 中通常是

float

如果您想删除小数并保留整数(

int
)。你可以像这样调用
int()
方法...

>>> int(2.0)
2

但是,

int
四舍五入向下所以...

>>> int(2.9)
2

如果你想四舍五入到最接近的整数,你可以使用

round
:

>>> round(2.9)
3.0
>>> round(2.4)
2.0

然后致电

int()

>>> int(round(2.9))
3
>>> int(round(2.4))
2

3
投票

你可能可以像下面这样做

# p and q are the numbers to be divided
if p//q==p/q:
    print(p//q)
else:
    print(p/q)

3
投票

有一个数学函数

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)


1
投票
>>> int(2.0)

您将得到答案2


1
投票
def division(a, b):
    return a / b if a % b else a // b

1
投票
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(不测试余数)小数将被截断。

这样最后就没有零了,除了零之外不会有其他的被忽略。


1
投票

Python中有4种去除小数位的方法,

  1. 使用int()函数
  2. 使用math库中的trunc()函数
  3. 使用字符串格式和方法
    1. 使用
      %d
      占位符
    2. 使用 split() 函数
  4. 使用round()函数

1.使用 int() 函数

int() 是一个 Python 内置 Type 函数。

>>> number = 2.0
>>> number
2.0
>>> number = int(2.0)
2
>>> type(number)
<class 'int'>

2.使用数学库中的 trunc() 函数

trunc() math 库中的函数。

>>> import math
>>> 
>>> number = 2.0
>>> number
2.0
>>> number = math.trunc(2.0)
2
>>> type(number)
<class 'int'>

3.使用字符串格式和方法

请注意:- 本部分返回的所有内容均为

str
类型。

1.使用 %d 占位符

使用

%d
占位符

格式化字符串
>>> number = 2.0
>>> number
2.0
>>> number = '%d'%number
>>> number
'2'
>>> type(number)
<class 'str'>

2.使用 split() 函数

split()函数是一个string方法。

>>> number = 2.0
>>> number
2.0
>>> number=str(number).split('.')[0]
>>> number
'2'
>>> type(number)
<class 'str'>

4.使用 round() 函数

round() 是一个内置函数

>>> number = 2.0
>>> number
2.0
>>> number = round(number)
>>> number
2
>>> type(number)
<class 'int'>

参考资料:-


0
投票

如果您使用 pandas,您可以使用 .astype(int) 来转换系列。 dataframe['列名'] = (列名).astype(int)

int() 和 math.trunc 不适用于系列数据类型。

© www.soinside.com 2019 - 2024. All rights reserved.