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

Nic*_*kel 2 floating-point int python-3.5

说我有一个浮点数。如果它是整数(例如1.0、9.0、36.0),我要删除“ .0(小数点和零)”并写入stdout。例如,结果将是1、9、36。如果浮点数是有理数,例如2.5335和95.5893,我希望输出是输入时的样子,即2.5335和95.5893。有什么聪明的方法吗?

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

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

ram*_*mbi 8

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

formatNumber = lambda n: n if n%1 else int(n)
Run Code Online (Sandbox Code Playgroud)
>>>formatNumber(5)
5

>>>formatNumber(5.23)
5.23

>>>formatNumber(6.0)
6
Run Code Online (Sandbox Code Playgroud)


小智 7

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

print(f'{1.0:g},{1.2:g}')  # Output: 1,1.2
Run Code Online (Sandbox Code Playgroud)


Tim*_*ter 5

这是一个以所需方式格式化数字的功能:

def formatNumber(num):
  if num % 1 == 0:
    return int(num)
  else:
    return num
Run Code Online (Sandbox Code Playgroud)

例如:

formatNumber(3.11111)
Run Code Online (Sandbox Code Playgroud)

退货

3.11111


formatNumber(3.0)

退货

3