Python 中保留小数点后 2 位但是不进行四舍五入

2019-11-26 16:30:28 +08:00
 kayseen

如题,

python 中的 round 在进行保留小数点后面位数的时候,小数点前面是奇数才进 1,偶数不进 1

如果需要对10.93909保留小数点后 2 位,但是不需要四舍五入,大家有好的方法吗?

tips: 网上的方法有: 1.转换成 str,然后 split,再拼接,再 float 转换,最后是 float 格式 2.str(10.93909).partition('.'), 然后再补'0',最后是 str 格式 3.re 匹配, re.findall(r"\d{1,}?.\d{2}", str(10.93909))

方法虽然可以实现,想问大家 python 有咩有更好的实现方法?

3752 次点击
所在节点    Python
5 条回复
crella
2019-11-26 16:33:29 +08:00
int(10.93909*100)/100,当然这不是 python 代码。
noobsheldon
2019-11-26 16:38:40 +08:00
关键字 decimal round_half_even
imn1
2019-11-26 16:44:33 +08:00
如果不用后续计算,只是输出的话,str 的 format 更好,不会出现浮点不可预料的问题
起码比 split 简单

如果要计算,我用#1 的方案多
yucongo
2019-11-27 11:57:01 +08:00
math.trunc(10.930 * 10 ** 2) / 10 ** 2
capo
2019-11-27 15:00:17 +08:00
num*100//1/100

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/623317

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX