Python3如何实现浮点数格式化:保留指定小数位且自动去除冗余末尾零
Python3浮点数格式化:保留指定小数位并去除末尾零的问题
我最近在研究Python3里浮点数格式化的问题,想找到能保留指定小数位同时自动去掉末尾冗余零的方法,目前试了几种方案但都有点小问题:
首先是常用的
f格式符,它能精准保留指定小数位数,比如:>>> "{:.4f}".format(3.14159265359) '3.1416'但麻烦的是它会强制保留末尾的零,比如计算3/4的时候:
>>> "{:.4f}".format(3/4) '0.7500'这不是我想要的,我希望结果能自动去掉多余的零,变成
'0.75'。后来试了
g格式符,看起来更接近需求,比如处理3/4的时候:>>> "{:.4g}".format(3/4) '0.75'这个结果很完美,但处理3.14159265359的时候就不对了:
>>> "{:.4g}".format(3.14159265359) '3.142'我想要的是保留四位小数的
'3.1416',但g格式符会把小数点前的数字也算进总位数限制里,所以只给了三位小数。
另外还有个要求:如果是整数(比如单独的0),格式化后不能带小数点。
现在我纠结的是:有没有办法只通过format方法就实现这个需求?还是说必须先格式化,再对结果字符串做额外处理来去掉末尾的零?
我自己查了Python官方的字符串格式规范文档,但没找到直接对应的方案。
内容的提问来源于stack exchange,提问作者Capt. Crunch
相关产品推荐
相关产品推荐

