防止python3中数字的自动科学形式

4 python formatting python-3.x python-3.4 python-3.5

计算时是否可以不指定科学/标准表格编号?

例如现在在我的代码中的一行中有:number = 10**23 * 1.1

它应该评估为 110000000000......0 或其他什么,而不是我分配了 1.1e+23 这很烦人,因为我试图将 IEEE754 转换为十进制并打印出特定的东西,但由于科学,它不会工作1.1e+23 的表示法

我试过环顾四周,但没有简单简洁的答案

pok*_*oke 5

默认情况下,您无法更改此设置。如果指数大于浮点精度,则显示浮点数时的默认行为始终移动到科学记数法。

改变这一点的唯一方法是以另一种方式明确地格式化它。如果您知道显示的数字应该具有什么精度,则可以使用format:

>>> number
1.1e+23
>>> format(number, 'f')
'110000000000000004194304.000000'
>>> format(number, '.0f')
'110000000000000004194304'
Run Code Online (Sandbox Code Playgroud)

您还可以将其与格式字符串一起使用:

>>> 'The number is {:.0f}'.format(number)
'The number is 110000000000000004194304'
Run Code Online (Sandbox Code Playgroud)

如果您的目标是将浮点数转换为整数,那么您应该这样做。整数具有无限精度,因此它们不使用科学记数法显示。例如,您可以round删除小数点后的数字:

>>> round(number)
110000000000000004194304
>>> int(number)
110000000000000004194304
Run Code Online (Sandbox Code Playgroud)

对于高精度小数,您可以使用Decimal类型。它允许小数具有任意精度:

>>> from decimal import Decimal
>>> d = 10**23 * Decimal('1.1')
>>> d
Decimal('110000000000000000000000.0')
>>> int(d)
110000000000000000000000
Run Code Online (Sandbox Code Playgroud)