繁体   English   中英

如何仅将整数(如 25.0)的浮点数更改为 integer 并将 25.9 等浮点数保留为 python 中的浮点数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM