[英]how to only change floats that are whole numbers like 25.0, into integer and keep floats like 25.9 as floats in python
我的目标是只将非整数转换为分数(如 0.5 转换为 1/2),并将 25.0 之类的数字转换为整数。 我知道如何将小数转换为分数,但我的代码会将 25.0 更改为 25/1,而不是仅打印 25。我尝试使用 isinstance(25.0, int) 进行检查,但它只返回 false。 关于如何帮助我的代码区分两者的任何建议。 我正在使用 python 3.9
Python 浮点数有方便as_integer_ratio()
和is_integer()
方法。 因此,您可以使用以下任何一种:
def float2int_maybe_1(f):
return int(f) if f.is_integer() else f
或者
def float2int_maybe_2(f):
n, d = f.as_integer_ratio()
return n if d == 1 else f
如果您对分数表示感兴趣,您可以将as_integer_ratio
中的信息用于其他目的。
您可以创建自己的 function。 这是一个简单的lambda function
。
divide = lambda i,j: i//i if i/j == i //j else i/j
现在,如果你这样做:
divide(25,1) # 1
divide(25,2) # 12.5
您可以通过以下方式使用fractions内置模块:
import fractions
def f(x):
frac = fractions.Fraction(x)
return int(frac) if frac.denominator == 1 else frac
print(f(25.0))
print(f(1.5))
output
25
3/2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.