在正数前加一个加号

时间:2018-12-06 08:36:43

标签: python python-3.x

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

"{0:+03f}".format(x)

我也听说过这两个,但我不知道如何使用它们:

"%+d" or "%+f"

第一个问题是格式后的数字为浮点型。

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

f(x) =  2x^2+2.000x-4.000000

那些零使它看起来很奇怪。

如果不在上面,有什么解决办法可以在什么都没有的情况下摆脱零,而在点之后只有零?

2 个答案:

答案 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)

//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已发展为提供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();
    }
}

以及python 3.6+ f字符串:

%+g