【发布时间】:2015-11-02 15:33:41
【问题描述】:
我正在尝试通过文本搜索以查找 Money EG £12.30 获取数字然后将它们相加。我已经设法达到我有一个浮点列表但我似乎无法将它们变为 2小数点。但是,就像在下面的代码中一样,如果我在列表中指定一个元素,例如 [0],那么它将将该元素格式化为 2 个小数点。
所以我的问题是: 如何将整个列表格式化为小数点后 2 位,记住我不知道列表会有多长。
import re
num_regex = re.compile(r'\d\d.\d\d')
file_name = input("Enter File Name to open: ")
text_file = open(file_name, 'r')
search_text = text_file.read()
search = num_regex.findall(search_text)
print("Numbers found:", search,)
new_search =[]
for item in search:
new_search.append(float(item))
new_search[0] = "%.2f" % new_search[0]
print(new_search[0])
【问题讨论】:
-
使用
decimal模块而不是float()。 -
我已经开始阅读它,但它要复杂得多。我对编程非常陌生,而且由于行话,很难阅读这些文本并从中获取任何有用的东西!
-
货币值是fixed-point,不是浮点数。对货币使用浮点运算并不明智,因为计算机表示浮点值的方式会导致意外舍入。
-
太困惑了,我将把它作为 12.3 做些什么,或者感谢一堆:)
-
对于结果列表中的项目:(Decimal(item).quantize(Decimal('.02'))) NewResultList.append(item) 对吗?
标签: python regex python-3.x floating-point decimal