在 Python 中将浮点列表转换为字符串

新手上路,请多包涵

我在 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

原文由 Niebieski 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

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

 >>> 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 )”.b— str.format 将自动正确地舍入数字(假设您首先输入了两位小数的数字,在这种情况下,浮点数错误不足以扰乱舍入)。

原文由 senshin 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

mylist = list(map(str, mylist))

原文由 ezekiel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题