【发布时间】:2015-02-13 15:38:39
【问题描述】:
我正在处理一个错误,将str 函数应用于decimal.Decimal 的实例会给我字符串'0E-1000'。我希望将str 应用于Decimal 总是会给我一个-?[0-9]+(\.[0-9]+) 形式的字符串,这正是我想要的。
首先,如果我理解正确,科学记数法'0E-1000' 代表0 x 10^-1000,即零。为什么我会得到这种特殊的零表示?为什么不是'0E-42',也一样?
其次,我无法手动构造一个重现此错误的Decimal。错误的Decimal 实例来自外部来源。在 REPL 中,表达式 str(Decimal(0)) 的计算结果为 '0'。如何构造 Decimal 的 d 实例 str(d) 评估为 '0E-1000'?
编辑:第三,如何将任意 Decimal 实例转换为字符串,你知道,十进制符号?
【问题讨论】:
-
这个数字是从哪里来的?
-
它来自 Django 模型中的一个字段。该字段定义为
models.DecimalField(max_digits=1000, decimal_places=1000, blank=True, null=True)。
标签: python string decimal scientific-notation