
通过指定精度对浮点数进行格式化有助于直观地组织数据。要在Python中格式化数字,我们常用的方法是**string.format(),**包括浮点数和整数格式化。让我们详细看看如何在Python中格式化浮点数。
Python格式化浮点数
要在Python中格式化 浮点数,请使用**format()**方法。format()是一个内置的Python格式化方法,允许多种替换和数值格式化。
让我们举个例子。
x = 211911461911461819112146
y = 2**70
print(x / y)
输出
179.4959901398329
要将浮动值格式化到小数点后两位,使用%.2f。
x = 211911461911461819112146
y = 2**70
z = x / y
print("%.2f" % z)
输出
179.50
要格式化到小数点后三位,使用**%.3f。**
x = 211911461911461819112146
y = 2**70
z = x / y
print("%.3f" % z)
輸出
179.496
你可以看到,当我们只打印两个小数位时,它会自动四舍五入到最接近的整数。但是,打印一个小数点后三位的数字时,仍然不会四舍五入到最近的整数。0.496是按原样打印的,因为我们想要一个小数点后三位的浮动值。
计算机是二进制的,所以它们将浮点数存储为整数,然后将其除以2的幂,并按内存中的值打印。
格式化输出应该允许你根据需要添加填充物,以及添加逗号分隔符等。
使用format()方法
格式规范 "是在格式字符串中包含的替换字段内使用的,以定义单个值的呈现方式。
请看下面的代码。
x = 211911461911461819112146
y = 2**70
z = x / y
print("{:.2f}".format(z))
输出
179.50
输出返回一个字符串。要获得浮动的输出,请使用float()函数。
x = 211911461911461819112146
y = 2**70
z = x / y
print(float("{:.2f}".format(z)))
输出
179.5
用float()方法进行包装,除了去掉小数点后的0,没有任何变化。
在Python中使用round()方法格式化浮动值
round**()是一个内置的Python**方法,它返回四舍五入到小数点后给定数字的浮点数。你可以使用round()方法来格式化浮点数。
x = 211911461911461819112146
y = 2**70
z = x / y
print(round(z, 2))
输出
179.5
但是请注意,round()函数对浮点数的行为在某些情况下可能是令人惊讶的。例如,round(3.575, 2)给出了3.57,而不是预期的3.58。这不是一个错误:这是一个结果,大多数小数的分数不能精确地表示为浮点数。
Python f-strings
Python f 字符串是对以前格式化方法的改进。
让我们使用f-字符串来格式化浮点数。
x = 211911461911461819112146
y = 2**70
z = x / y
print(f'{z:.2f}')
输出
179.50
它对带有运算符的长计算很有效,而且不需要小括号。
Python float格式。完整的表格
| 数值 | 格式 | 输出 | 描述 |
|---|---|---|---|
| 3.1415926 | {:.2f} | 3.14 | 小数点后2位的浮动格式 |
| 3.1415926 | {:+.2f} | +3.14 | 带符号的小数点后2位浮点数格式 |
| -1 | {:+.2f} | -1.00 | 带符号的小数点后2位的格式 |
| 2.71828 | {:.0f} | 3 | 无小数位的浮动格式 |
| 4 | {:0>2d} | 04 | 用零来填充数字(左边填充,宽度为2) |
| 4 | {:x<4d} | 4xxx | 用x来填充数字(右边的填充物,宽度为4) |
| 10 | {:x<4d} | 10xx | 带x的焊盘数字(右边的填充物,宽度为4) |
| 1000000 | {:,} | 1,000,000 | 带有逗号分隔符的数字格式 |
| 0.35 | {:.2%} | 35.00% | 百分比格式 |
| 1000000000 | {:.2e} | 1.00e+09 | 指数符号 |
| 11 | {:11d} | 11 | 右对齐(默认,宽度为10) |
| 11 | {:<11d} | 11 | 左对齐(宽度为10) |
| 11 | {:^11d} | 11 | 中心对齐(宽度为10) |
结论
Python 中的大多数数字不能用浮点数准确表示。如果你需要对数字进行四舍五入,因为这是你的数学公式或算法的要求,那么你应该使用 round() 方法。
如果你想把显示限制在一定的精度内,甚至不要使用round,使用%.2f或f-strings或根据你的要求格式化字符串。