我需要将列表中的所有元素截断/舍入/对齐到8个字符.输入列表可以包含int(永远不会太长)、str(可以截断)和浮点数为float
、float64
或str
.
下面是我的代码示例:
data = [12452, "too much characters", 0.12457544512, -0.12457544512, "-1245154.8"]
processedData = []
for d in data:
processedValue = str(d)
if len(processedValue) > 8 and '.' in processedValue:
decIndex = processedValue.index(".")
processedValue = str(round(float(processedValue), 8 - (decIndex + 1)))
elif len(processedValue) > 8:
processedValue = processedValue[:8]
processedData.append(processedValue.rjust(8, " "))
print(processedData)
输出和期望输出:
[' 12452', 'too much', '0.124575', '-0.12458', '-1245150.0'] # Output
[' 12452', 'too much', '0.124575', '-0.12458', '-1245155'] # Desired Output
当小数点接近8个字符的末尾时,我的值不会在正确的索引处四舍五入.当我用if
替换elif
条件时,长度是正确的,但最后一个数字仍然是错误的.我try 了一些其他的改变,最终引入了其他值的错误.