我正在研究python,我坚持这个问题.
输入(有一个元组):
a = (0, 1)
Run Code Online (Sandbox Code Playgroud)
输出:
a = 0.1
Run Code Online (Sandbox Code Playgroud)
jam*_*lak 10
单个数字,只有两个元素
>>> a = (0, 1)
>>> a[0] + a[1] * 0.1
0.1
Run Code Online (Sandbox Code Playgroud)
多个单个数字
>>> from itertools import count
>>> a = (0, 1)
>>> sum(n * 10 ** i for i, n in zip(count(0, -1), a))
0.1
>>> a = (0, 1, 5, 3, 2)
>>> sum(n * 10 ** i for i, n in zip(count(0, -1), a))
0.15320000000000003
Run Code Online (Sandbox Code Playgroud)
使用reduce
(对于P 3.0+你将需要:from functools import reduce
)
>>> a = (0, 1, 5, 3, 2)
>>> reduce(lambda acc, x: acc * 0.1 + x, reversed(a))
0.1532
Run Code Online (Sandbox Code Playgroud)
使用该decimal
模块
>>> from decimal import Decimal
>>> a = (0, 1, 5, 3, 2)
>>> Decimal((0, a, -len(a) + 1))
Decimal('0.1532')
Run Code Online (Sandbox Code Playgroud)
任何两个数字
>>> a = (0, 1)
>>> float('{0}.{1}'.format(*a))
0.1
Run Code Online (Sandbox Code Playgroud)
任何数字
>>> a = (0, 1, 5, 3, 2)
>>> float('{0}.{1}'.format(a[0], ''.join(str(n) for n in a[1:])))
0.1532
Run Code Online (Sandbox Code Playgroud)
可能存在一些浮点不准确性,您可以通过使用Decimal
s 来修复.
>>> sum(Decimal(n) * Decimal(10) ** Decimal(i) for i, n in zip(count(0, -1), a))
Decimal('0.1532')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1394 次 |
最近记录: |