如果值是整数,如何将浮点数格式化为整数。也就是说,将 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有不必要的十进制 0 的情况下很好地将浮点数格式化为字符串

将浮点数格式化为两位小数

将浮点数的数据框转换为熊猫中的整数?

将浮点数格式化为 n 位小数

我们如何将浮点数拆分为整数和小数部分?

为啥将浮点数除以整数返回 0.0?