如果值是整数,如何将浮点数格式化为整数。也就是说,将 13.0 显示为 13 而将 13.5 显示为 13.5
Posted
技术标签:
【中文标题】如果值是整数,如何将浮点数格式化为整数。也就是说,将 13.0 显示为 13 而将 13.5 显示为 13.5【英文标题】:How to format float to integer if the value is integral. That is, display 13.0 as 13 but 13.5 as 13.5 【发布时间】:2020-02-06 10:24:42 【问题描述】:[使用 Python 3.x]
我正在尝试显示二维线方程。我假设系数或常数是浮动的,因为它们可能是浮动的。但是,如果它们是整数,我想将它们显示为整数。
也就是说,而不是
x + 3.0y = 13.0
我要显示
x + 3y = 13
然而,
x + 3.5y = 13.5
应该保持原样。
如何进行这种条件格式?
【问题讨论】:
【参考方案1】:假设函数只会传递一个精确的乘数(没有未知变量),输入和输出是字符串:
def simplifyFloat(str):
f = float(str)
if f % 1 == 0: #if f has some floating point this is going to be false
f = int(f)
return str(f)
及用法:
equation = '2.0x + 3.5y + 2'
x_part, o, y_part, o, const_part = equation.split(' ') # o variables for dumping operators
# [:-1] before string means you get rid of the last letter, which is 'x' and 'y'
print(simplifyFloat(x_part[:-1])) # output '2'
print(simplifyFloat(y_part)[:-1]) # output '3.5'
【讨论】:
【参考方案2】:可能有更有效的方法可以做到这一点,但使用 ceil
值进行分支可以正常工作:
import math
number1 = 3.0
number2 = 3.5
def integral_formatting(n):
return n if n != math.ceil(n) else math.ceil(n)
>>> integral_formatting(number1)
3
>>> integral_formatting(number2)
3.5
【讨论】:
【参考方案3】:我能想到的一种有效方法是创建一个返回整数或浮点数的函数,具体取决于具体情况。函数可以像
def check(x):
if int(x) == x:
return int(x)
else:
return float(x)
现在,任何数字都可以用check(1.0) * x + check(13) * y = check(13.5)
表示。这将导致1x + 13y = 13.5
。希望这会有所帮助!
【讨论】:
以上是关于如果值是整数,如何将浮点数格式化为整数。也就是说,将 13.0 显示为 13 而将 13.5 显示为 13.5的主要内容,如果未能解决你的问题,请参考以下文章