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

Sha*_*ane 21 python number-formatting

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

谢谢

Mic*_*rdt 44

来自浮点指南的Python备忘单:

"%.2f" % 1.2399 # returns "1.24"
"%.3f" % 1.2399 # returns "1.240"
"%.2f" % 1.2 # returns "1.20"
Run Code Online (Sandbox Code Playgroud)

使用round()是不对的,因为浮点数是二进制分数,不能准确表示十进制数字.

如果需要使用十进制数字进行计算,请使用模块中的Decimal类型decimal.


Ric*_*dle 21

如果您想要一个数字,请使用以下round()函数:

>>> round(12.3456, 2)
12.35
Run Code Online (Sandbox Code Playgroud)

(但迈克尔的回答是+1.这个Decimal类型.)

如果你想要一个字符串:

>>> print "%.2f" % 12.34567
12.35
Run Code Online (Sandbox Code Playgroud)


ona*_*000 7

From: Python Docs round(x [,n])返回小数点后的舍入值x舍入到n位数.如果省略n,则默认为零.结果是一个浮点数.数值四舍五入为10的最接近倍数,功率减去n; 如果两个倍数相等,则舍入远离0(因此,例如,round(0.5)为1.0,round(-0.5)为-1.0).

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

看起来像圆(293.466 .... [,2])会这样做,


小智 6

I hope this will help.

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))
Run Code Online (Sandbox Code Playgroud)

Result:

189.75
Run Code Online (Sandbox Code Playgroud)


Eth*_*erd 5

x = round(293.4662543, 2)


Ale*_*nov 5

单程:

>>> number = 1
>>> '{:.2f}'.format(number) #1.00
>>> '{:.3f}'.format(number) #1.000
Run Code Online (Sandbox Code Playgroud)

第二种方式:

>>> '%.3f' % number #1.000
>>> '%.3f' % number #1.000
Run Code Online (Sandbox Code Playgroud)

见“格式化python”