PyQt - 如何在QLabel中禁用科学记数法

时间:2012-02-13 12:24:44

标签: python pyqt

我将Decimal模块用于大数字,但是对于小于0.00001的值,它会变成科学记数法。有没有办法禁用它,以便显示所有小数位:

round(Decimal(str(value)), 9)

'{0:f}'。format(value)不起作用,因为它显示所有数字,例如0.0000100000而不是0.00001

我想要的是在舍入0.0000000015之后显示0.000000002。

我试过

def set_decimals(self, value, decimals):
    val = '{0:f}'.format(Decimal(str(value)))
    rnd_value = round(Decimal(val), decimals)
    return str(rnd_value)

但它仍将其转换为科学记数法

感谢。

2 个答案:

答案 0 :(得分:1)

我找不到更好的解决方案:

def regularNotation(value):
    """Sometimes str(decimal) makes scientific notation. This function makes the regular notation."""
    v = '{:.14f}'.format(value).rpartition('.') # 14 digits in fractional part
    return v[0] + (v[1] + v[2]).rstrip('.0') # strip trailing 0s after decimal point

答案 1 :(得分:0)

'{0:f}'.format(value)未返回您想要的内容,因为float类型的默认格式化程序会以固定大小截断。但Decimal本身并非如此:

>>> '{0:f}'.format(Decimal(str(0.0000000000000001)))
'0.0000000000000001'

默认情况下,使用的格式为'g' 'G',具体取决于具体情况。