代码之家  ›  专栏  ›  技术社区  ›  Shane

如何在python中将293.4662543这样的浮点数转换为293.47?

  •  16
  • Shane  · 技术社区  · 14 年前

    如何缩短我得到的浮动结果?我只需要点后两位数字。对不起,我真的不知道如何用英语更好地解释这个。。。

    谢谢

    7 回复  |  直到 14 年前
        1
  •  47
  •   Michael Borgwardt    14 年前

    Python cheat sheet :

    "%.2f" % 1.2399 # returns "1.24"
    "%.3f" % 1.2399 # returns "1.240"
    "%.2f" % 1.2 # returns "1.20"
    

    binary fractions 哪一个 精确表示小数位数。

    如果需要使用十进制数字进行计算,请使用 Decimal decimal 模块。

        2
  •  22
  •   RichieHindle    14 年前

    round() 功能:

    >>> round(12.3456, 2)
    12.35
    

    Decimal 类型。)

    如果需要字符串:

    >>> print "%.2f" % 12.34567
    12.35
    
        3
  •  8
  •   jpihl    9 年前

    发件人: Python Docs 圆形(x[,n]) 返回小数点后四舍五入到n位的浮点值x。如果省略n,则默认为零。结果是一个浮点数。数值四舍五入到10的最接近幂减n的倍数;如果两个倍数相等,则四舍五入从0开始(所以)。例如,round(0.5)为1.0,round(-0.5)为-1.0。

    注意,float的round()行为可能令人惊讶:例如,round(2.675,2)给出2.67,而不是预期的2.68。这并不是一个错误:这是因为大多数小数部分不能被精确地表示为浮点数。有关详细信息,请参阅浮点运算:问题和限制。

        4
  •  7
  •   Xavi Martínez    7 年前

    我希望这会有帮助。

    def do(*args):
        formattedList = [float("{:.2f}".format(num)) for num in args]
        _result =(sum(formattedList))
        result = round(_result,2)
        return result
    
    
    print(do(23.2332,45.24567,67,54.27))
    

    结果:

    189.75
    
        5
  •  5
  •   Ethan Shepherd    14 年前

    x = round(293.4662543, 2)

        6
  •  3
  •   ghostdog74    14 年前
    >>> print "%.2f" % 293.44612345
    293.45
    
        7
  •  2
  •   Alexey Nikonov    5 年前

    >>> number = 1
    >>> '{:.2f}'.format(number) #1.00
    >>> '{:.3f}'.format(number) #1.000
    

    第二种方式:

    >>> '%.3f' % number #1.000
    >>> '%.3f' % number #1.000
    

    参见“格式化python”

        8
  •  0
  •   chribsen    8 年前

    如果你需要像 2.3公里 1200万 ,此函数执行以下操作:

    def get_shortened_integer(number_to_shorten):
        """ Takes integer and returns a formatted string """
        trailing_zeros = floor(log10(abs(number_to_shorten)))
        if trailing_zeros < 3:
            # Ignore everything below 1000
            return trailing_zeros
        elif 3 <= trailing_zeros <= 5:
            # Truncate thousands, e.g. 1.3k
            return str(round(number_to_shorten/(10**3), 1)) + 'k'
        elif 6 <= trailing_zeros <= 8:
            # Truncate millions like 3.2M
            return str(round(number_to_shorten/(10**6), 1)) + 'M'
        else:
            raise ValueError('Values larger or equal to a billion not supported')
    

    >>> get_shortened_integer(2300)
    2.3k # <-- str
    
    >>> get_shortened_integer(1300000)
    1.3M # <-- str