如何删除浮点数的“.0”?

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

假设我有一个浮点数。如果它是一个整数(例如 1.0、9.0、36.0),我想删除“.0(小数点和零)”并写入标准输出。例如,结果将是 1, 9, 36。如果浮点数是有理数,例如 2.5335 和 95.5893,我希望输出与输入相同,即 2.5335 和 95.5893。有什么聪明的方法可以做到这一点吗?

只有数字是否有 .0 或小数点后的其他数字才重要。我可以说我的问题是:我如何知道浮点数是否实际上是整数?

我想用它来决定目录名称。例如,如果我输入 9.0 和 2.45,则创建两个目录 dir9 和 dir2.45。

floating-point int python-3.5
7个回答
26
投票

这里有一个函数可以按照您想要的方式格式化您的数字:

def formatNumber(num):
  if num % 1 == 0:
    return int(num)
  else:
    return num

例如:

formatNumber(3.11111)

退货

3.11111


formatNumber(3.0)

退货

3


11
投票

您可以使用字符串格式

>>> "%g" % 1.1
'1.1'
>>> "%g" % 1.0
'1'

8
投票

您可以合并之前的 2 个答案:

formatNumber = lambda n: n if n%1 else int(n)
>>>formatNumber(5)
5

>>>formatNumber(5.23)
5.23

>>>formatNumber(6.0)
6

7
投票

您可以使用 fstrings 来做到这一点,例如

print(f'{1.0:g},{1.2:g}')  # Output: 1,1.2

1
投票
num = 5.0
if float(num) == int(num):
    num = int(num)

输出:5


0
投票

进一步“MD”。 Ferdous Ibne Abu Bakar 的回答,如果你有一个字符串,这个函数就可以工作:

val = str(5.0)
def remove_zero_float(val):
    if float(val) == int(float(val)):
        val = int(float(val))
    return val

输出:5


-3
投票

只需输入 整数(数字) 示例:

int(3.0)

退货

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