f字符串将舍入的浮点数恢复为未舍入的数

问题描述

我有一个函数(包含numpy计算,float32),该函数返回字典,其中的值是包含文本和数字的列表。在函数中,某些数字在添加到字典时已四舍五入到小数点后三位。打印返回的字典将给出一个示例条目(四个四舍五入的值以粗体显示):

'51450049':['ULT','IRU',71254171,'30085','11420','20008','23200','22100','46000','Z1', 10.132 ,'-',73566310,'50069','10413','20001','23100','22000','46001','Z1','---', -51.269 ,71254171,'30085','11420','20008','23200','22100','46000','Z2', 17.258 ,'- ',73375014,'50063','15833','20001','23100','22000','46001','Z2','---', -77.339 ] >

稍后在代码中,使用f字符串将返回的字典中的值写入文本文件。示例代码

file_object.write(f'{element_id:<13}{values[0]:<12}{values[1]:<9}{values[2]:<13}{values[3]:<9}'
                  f'{values[4]:<9}{values[5]:<12}{values[6]:<18}{values[7]:<9}{values[8]:<14}'
                  f'{values[9]:<8}{values[10]:18}{values[11]:15}\n'
                  )

例如,{values [10]:18}命令引用上面条目中的值10.132。类似的命令用于在输出的不同行上打印其他三个值。

但是,在输出的文本文件中,打印的值似乎已恢复到其四舍五入的状态?例如

字典中的舍入值:

  • 10.132 -51.269 17.258 -77.339

由f字符串打印

  • 10.131999969482422 -51.26900100708008 17.257999420166016 -77.33899688720703

我知道我可以将f弦“四舍五入”,但是为什么我需要有效地做两次呢?我在函数中四​​舍五入数字以减小返回字典的大小,但是我在这里缺少基本的东西吗?即是否保留了整个float16数字?谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)