Python 在正数前加一个加号

Python 在正数前加一个加号,python,python-3.x,Python,Python 3.x,我想在数字前加一个加号。我已经在使用格式说明符: "{0:+03f}".format(x) 我也听说过这两个,但我不知道如何使用它们: "%+d" or "%+f" 第一个的问题是格式后面的数字是浮点型的 例如,我正在制作一个计算二次函数的小程序,但我对这样的输出不满意: f(x) = 2x^2+2.000x-4.000000 那些零让它看起来很奇怪 如果不在上面,当没有零时,有什么解决方案可以去掉零,而只有点后的零吗?也许%g就是你要找的 >>> '%+g' % 2.

我想在数字前加一个加号。我已经在使用格式说明符:

"{0:+03f}".format(x)
我也听说过这两个,但我不知道如何使用它们:

"%+d" or "%+f"
第一个的问题是格式后面的数字是浮点型的

例如,我正在制作一个计算二次函数的小程序,但我对这样的输出不满意:

f(x) =  2x^2+2.000x-4.000000
那些零让它看起来很奇怪


如果不在上面,当没有零时,有什么解决方案可以去掉零,而只有点后的零吗?

也许
%g
就是你要找的

>>> '%+g' % 2.
'+2'
>>> '%+g' % 2.1
'+2.1'
>>> '%+g' % 2.10001
'+2.10001'
%g
的确切定义如下:

一般格式。对于给定的精度p>=1,这将对数字进行四舍五入 对有效数字进行p,然后将结果格式化为 定点格式或科学记数法,取决于其 规模

精确的规则如下:假设结果已格式化 表示类型为“e”且精度为p-1时,指数exp。
然后,如果-4
%+g
有效,但使用(非常)旧式格式。Python已发展为提供两种现代格式方法:

新样式格式:

>>> "{0:+g}".format(2.00001)
'+2.00001'
>>> "{0:+g}".format(-2.00001)
'-2.00001'
>>> "{0:+g}".format(2)
'+2'
对于python 3.6+f字符串:

>>> value = 2
>>> f"{value:+g}"
'+2'
>>> value = -2.00001
>>> f"{value:+g}"
'-2.00001'
>>> value = 2.00001
>>> f"{value:+g}"
'+2.00001'

当然这是一个浮动,在
“{0:+03f}”中的
f
代表
float
。我回滚了你最近的编辑,后续/变色龙问题是违反规则的。请参见,但是,这是旧式格式。有没有
格式的替代方案?@Jean-Françoisfare:是的,完全一样。我已经更新了答案。谢谢,它有效,但我有新问题。即使q1已经是负数-str((f“{q1:-g}”),这段代码也会给我一个负数。为什么不将数字q1(例如q1=-2)格式化为--2,这应该是2?您不应该添加类似这样的后续问题。既然您使用的是3.6格式,为什么不执行
f“{-q1:+g}”
或取绝对值
f“{abs(q1:+g}”)
>>> value = 2
>>> f"{value:+g}"
'+2'
>>> value = -2.00001
>>> f"{value:+g}"
'-2.00001'
>>> value = 2.00001
>>> f"{value:+g}"
'+2.00001'