在python3

时间:2016-03-17 07:01:26

标签: python python-3.x formatting python-3.4 python-3.5

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

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

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

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

1 个答案:

答案 0 :(得分:4)

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

更改此功能的唯一方法是通过显式以其他方式对其进行格式化。如果您知道显示的号码应具有的精确度,则可以使用format

>>> number
1.1e+23
>>> format(number, 'f')
'110000000000000004194304.000000'
>>> format(number, '.0f')
'110000000000000004194304'

您也可以使用格式字符串:

>>> 'The number is {:.0f}'.format(number)
'The number is 110000000000000004194304'

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

>>> round(number)
110000000000000004194304
>>> int(number)
110000000000000004194304

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

>>> from decimal import Decimal
>>> d = 10**23 * Decimal('1.1')
>>> d
Decimal('110000000000000000000000.0')
>>> int(d)
110000000000000000000000