将字符串中所有浮点数的精度截断为10位小数

2024-06-14 19:54:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把字符串中所有的浮点数四舍五入到小数点后10位。我提出了下面的实现,它使用正则表达式查找所有浮点数,通过对每个浮点数调用float将它们转换为float,然后使用Python中的格式字符串实现舍入(例如{:.10f}".format(float("0.12345678912345777")

import re

def truncate_floats(input, precision):
    for f in re.findall(r"[-+]?\d*\.\d{{{},}}".format(precision), input):
        format_str = "{{:.{}f}}".format(precision)
        input = input.replace(f, format_str.format(float(f)))
    return input

In [1]: truncate_floats("x + -2.12345678912345777 + 123 + 0.123", 10)
Out[1]: 'x + -2.1234567891 + 123 + 0.123'

有没有更好的方法来实现这一点?该代码适用于python2.73.7

Update1:不能保证字符串在float和其他对象之间有空格


Tags: 字符串importreformatforinputdef格式