9

我在 Python 中有一个浮点数列表,当我将其转换为字符串时,我得到以下信息

[1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001]

当我创建它们时,这些浮点数在小数点后有 2 位数字(我相信如此),

然后我用

str(mylist)

如何获得小数点后两位数的字符串?

=======================

让我更具体地说,我希望最终结果是一个字符串,并且我想保留分隔符:

"[1883.95, 1878.33, 1869.43, 1863.40]"

之后我需要做一些字符串操作。例如+="!\t!".

例如,受@senshin 启发,以下代码可以工作,但我认为有更好的方法

msg = "["

for x in mylist:
    msg += '{:.2f}'.format(x)+','

msg = msg[0:len(msg)-1]
msg+="]"
print msg
4

4 回答 4

13

使用字符串格式获取所需的小数位数。

>>> nums = [1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001]
>>> ['{:.2f}'.format(x) for x in nums]
['1883.95', '1878.33', '1869.43', '1863.40']

格式字符串的{:.2f}意思是“打印一个f小数点后两位的定点数 ( .2)”。str.format将自动正确地对数字进行四舍五入(假设您首先输入了带两位小数的数字,在这种情况下,浮点错误不足以干扰四舍五入)。

于 2014-05-01T23:52:37.053 回答
2
map(lambda n: '%.2f'%n, [1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001])

map()为作为第二个参数传递的列表/迭代中的每个元素调用在第一个参数中传递的可调用对象。

于 2014-05-01T23:53:22.300 回答
2

如果你想保持完全精确,语法上最简单/最清晰的方法似乎是

mylist = list(map(str, mylist))
于 2020-10-01T11:56:11.210 回答
1

去掉 ' 标记:

>>> nums = [1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001]
>>> '[{:s}]'.format(', '.join(['{:.2f}'.format(x) for x in nums]))
'[1883.95, 1878.33, 1869.43, 1863.40]'
  • ['{:.2f}'.format(x) for x in nums]制作一个字符串列表,如接受的答案所示。
  • ', '.join([list])返回一个在列表元素之间插入 ', ' 的字符串。
  • '[{:s}]'.format(joined_string)添加括号。
于 2017-08-15T13:29:42.227 回答