关于 python f 字符串的基本问题,但找不到答案:如何强制浮点数或整数的符号显示?即什么 f 字符串使
3
显示为 +3
?
来自文档:
文档示例:表示符号只能用于负数(这是默认行为)。
选项 意义 '+'
表示正数和负数都应使用 符号。 '-'
>>> '{:+f}; {:+f}'.format(3.14, -3.14) # show it always
'+3.140000; -3.140000'
>>> '{:-f}; {:-f}'.format(3.14, -3.14) # show only the minus -- same as '{:f}; {:f}'
'3.140000; -3.140000'
>>> '{:+} {:+}'.format(10, -10)
'+10 -10'
以上使用 f-strings 的示例:
>>> f'{3.14:+f}; {-3.14:+f}'
'+3.140000; -3.140000'
>>> f'{3.14:-f}; {-3.14:-f}'
'3.140000; -3.140000'
>>> f'{10:+} {-10:+}'
'+10 -10'
打印 0
时需要注意一点,因为0 既不是正数也不是负数。在Python中,
+0 = -0 = 0
。
>>> f'{0:+} {-0:+}'
'+0 +0'
>>> f'{0.0:+} {-0.0:+}'
'+0.0 -0.0'
0.0
和
-0.0
是不同的对象1。
在某些计算机硬件中有符号数字表示,零有两种不同的表示,正数与正数分组,负数与负数分组;这种对偶表示形式称为有符号零,后一种形式有时称为负零。
更新: 从 Python 3.11 及更高版本开始,允许负浮点零作为正零。
示例来自
'z'
选项在舍入到格式精度后将负零浮点值强制转换为正零。此选项仅对浮点表示类型有效。
>>> x = -.00001
>>> f'{x:z.1f}' '0.0'
>>> x = decimal.Decimal('-.00001')
>>> '{:+z.1f}'.format(x) '+0.0'
1. Python 中的负 0。另请查看有符号零 (-0)
:+
number=3
print(f"{number:+}")
输出
+3
f"{['', '+'][number>0]}{number}"
numbers = [+3, -3]
for number in numbers:
print(f"{['', '+'][number>0]}{number}")
结果:
+3
-3
编辑:小时间分析:
import time
numbers = [+3, -3] * 1000000
t0 = time.perf_counter()
[print(f"{number:+}", end="") for number in numbers]
t1 = time.perf_counter()
[print(f"{number:+.2f}", end="") for number in numbers]
t2 = time.perf_counter()
[print(f"{['', '+'][number>0]}{number}", end="") for number in numbers]
t3 = time.perf_counter()
print("\n" * 50)
print("""number:+ : """ + str(round(t1-t0, 2)) + "s")
print("""number:+.2f : """ + str(round(t2-t1, 2)) + "s")
print("""['', '+'][number>0] : """ + str(round(t3-t2, 2)) + "s")
结果:
number:+ : 1.43s
number:+.2f : 1.98s
['', '+'][number>0] : 1.23s
看起来我有最快的整数解决方案。