Python:删除十进制除法

Python:删除十进制除法,python,decimal,division,Python,Decimal,Division,我制作了一个程序,将数字除法,然后返回数字,但问题是当它返回数字时,它有一个如下的十进制: 2.0 但我希望它能给我: 2 那我还能做什么呢 提前谢谢 您可以对最终结果调用int(): >>> int(2.0) 2 当一个数字作为十进制数时,它在Python中通常是一个数字 如果要删除小数并将其保留为整数()。您可以对其调用int()方法,如下所示 >>> int(2.0) 2 但是,int向下舍入,因此 如果要舍入到最接近的整数,可以使用: 然后调用

我制作了一个程序,将数字除法,然后返回数字,但问题是当它返回数字时,它有一个如下的十进制:

2.0
但我希望它能给我:

2
那我还能做什么呢

提前谢谢

您可以对最终结果调用
int()

>>> int(2.0)
2

当一个数字作为十进制数时,它在Python中通常是一个数字

如果要删除小数并将其保留为整数()。您可以对其调用
int()
方法,如下所示

>>> int(2.0)
2
但是,
int
向下舍入,因此

如果要舍入到最接近的整数,可以使用:

然后调用
int()

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

您将得到答案,答案为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)

如果val%1==0: val=int(val) 其他: val=浮动(val)
这对我有用

工作原理:如果val与1的商的余数为0,则val必须是整数,因此可以声明为int,而不必担心丢失十进制数

比较这两种情况:

A:

val=12.00
如果val%1==0:
val=int(val)
其他:
val=浮动(val)
打印(val)
在这种情况下,输出为12,因为12.00除以1的余数为0。有了这些信息,我们知道val没有任何小数,我们可以将val声明为int

B:

val=13.58
如果val%1==0:
val=int(val)
其他:
val=浮动(val)
打印(val)
这一次输出是13.58,因为当val除以1时,有一个余数(0.58),因此val被声明为浮点

通过将数字声明为int(不测试余数),十进制数字将被截断


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

请给我们看一下你的代码。你也可以使用整数除法与
/
,它总是给出一个整数,例如
1//2
它给出
0
如果这对你有帮助,那么如果它是一个大数字,你可以怎么办?@Jeff你为什么不检查一下自己?Python对数字的大小没有问题。谢谢!我在发帖子后意识到了这一点。不管出于什么原因,我认为unix日期格式的数字太大,但我错了!ValueError:int()的文本无效,基数为10:'68.0'@Kyrie你可以做
int(float('68.0'))
@TerryA如果
int(1.999999999999999999)
,它将不起作用,我如何删除小数?@Bear
math.floor(1.999999999999999999)
这会增加哪些其他答案中没有的内容?谢谢,这帮助我解决了一个不同但相关的问题。:)@jayveesea谢谢你的提示,我在网站和编程方面还是新手。
>>> int(2.0)
# p and q are the numbers to be divided
if p//q==p/q:
    print(p//q)
else:
    print(p/q)
def division(a, b):
    return a / b if a % b else a // b
import math

print("math.modf(3.14159) : ", math.modf(3.14159))