我想在数字前添加一个加号。我已经在使用格式说明符:
"{0:+03f}".format(x)
我也听说过这两个,但我不知道如何使用它们:
"%+d" or "%+f"
第一个问题是格式后的数字为浮点型。
例如,我正在编写一个用于计算二次函数的小程序,但对这样的输出不满意:
f(x) = 2x^2+2.000x-4.000000
那些零使它看起来很奇怪。
如果不在上面,有什么解决办法可以在什么都没有的情况下摆脱零,而在点之后只有零?
答案 0 :(得分:5)
也许您正在寻找%g
?
>>> '%+g' % 2.
'+2'
>>> '%+g' % 2.1
'+2.1'
>>> '%+g' % 2.10001
'+2.10001'
%g
的确切定义如下:
常规格式。对于给定的精度p> = 1,这会舍入数字 p有效数字,然后将结果格式化为 定点格式或科学计数法,取决于其 幅度。
精确的规则如下:假设结果格式化 表示类型为“ e”且精度为p-1的将具有指数exp。 然后,如果-4 <= exp
正负无穷大,正负零和nans, 分别设置为inf,-inf,0,-0和nan格式,无论 精度。
精度0等同于精度1。 默认精度为6。
(source。)
与format()
类似:
>>> '{0:+g}'.format(2.)
'+2'
>>> '{0:+g}'.format(2.1)
'+2.1'
>>> '{0:+g}'.format(2.1001)
'+2.1001'
答案 1 :(得分:3)
可以使用,但是使用(非常)旧的格式。 Python已发展为提供2种现代格式化方法://in repo method
$em = $this->getEntityManager();
$em->beginTransaction();
try {
$em->persist($yourEntityThatCanBeDuplicate);
$em->flush();
$em->commit();
} catch (\Throwable $e) {
//Rollback all nested transactions
while ($em->getConnection()->getTransactionNestingLevel() > 0) {
$em->rollback();
}
//Reset the default em
if (!$em->isOpen()) {
$this->registry->resetManager();
}
}
新样式格式:
//in repo method
$em = $this->getEntityManager();
$em->beginTransaction();
try {
$em->persist($yourEntityThatCanBeDuplicate);
$em->flush();
$em->commit();
} catch (\Throwable $e) {
//Rollback all nested transactions
while ($em->getConnection()->getTransactionNestingLevel() > 0) {
$em->rollback();
}
//Reset the default em
if (!$em->isOpen()) {
$this->registry->resetManager();
}
}
以及python 3.6+ f字符串:
%+g