【问题标题】:How to format float to integer if the value is integral. That is, display 13.0 as 13 but 13.5 as 13.5如果值是整数,如何将浮点数格式化为整数。也就是说,将 13.0 显示为 13 而将 13.5 显示为 13.5
【发布时间】:2020-02-06 10:24:42
【问题描述】:

[使用 Python 3.x]

我正在尝试显示二维线方程。我假设系数或常数是浮动的,因为它们可能是浮动的。但是,如果它们是整数,我想将它们显示为整数。

也就是说,而不是

x + 3.0y = 13.0

我要显示

x + 3y = 13

然而,

x + 3.5y = 13.5

应该保持原样。

如何进行这种条件格式?

【问题讨论】:

    标签: python python-3.x number-formatting


    【解决方案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。希望这会有所帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-31
          • 2019-10-17
          • 2018-07-16
          • 1970-01-01
          • 1970-01-01
          • 2012-06-29
          相关资源
          最近更新 更多