首页 / PYTHON / 关于python3四舍五入的问题
关于python3四舍五入的问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于python3四舍五入的问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1623字,纯文字阅读大概需要3分钟。
内容图文
![关于python3四舍五入的问题](/upload/InfoBanner/zyjiaocheng/626/869e9d87fac64011915addb66e972d2a.jpg)
输入描述:
学号以及3科成绩,学号和成绩之间用英文分号隔开,成绩之间用英文逗号隔开。
输出描述:
学号,3科成绩,输出格式详见输出样例。示例1
输入
17140216;80.845,90.55,100.00
输出
The each subject score of No. 17140216 is 80.85, 90.55, 100.00.
选择用python做的话:很容易就写出来如下代码:
s_input = input()
a,b = s_input.split(";")
s1,s2,s3 = b.split(",")
print("The each subject score of No. %s is %.2f, %.2f, %.2f."%(a,round(float(s1),2),round(float(s2),2),round(float(s3),2)))
然后发现与题目要求的输出结果不一致,80.845四舍五入得到的是80.84
那如何能得到正确的四舍五入结果呢?
百度搜索之后,发现网上有说,写个函数,乘以一百,四舍五入之后,再除以一百,就能得到正确的四舍五入结果,尝试了一下,发现这个是坑,80.845四舍五入得到的是80.84,还是没办法返回80.85
继续百度,发现可以用 decimal 模块,设置rounding参数,指定进位方式为ROUND_HALF_EVEN 就可以得到正确的结果
于是自己写一个四舍五入的函数:
from decimal import Decimal, ROUND_HALF_UP
def rdec(x):
return Decimal(x).quantize(Decimal('0.00'), rounding=ROUND_HALF_UP)
这个函数的传参,建议用字符串,如果是浮点数的话,浮点值在计算机里面不能被精确存储,那么它会先被转换为一个不精确的二进制值,然后再把这个不精确的二进制值转换为等效的十进制值,这样得到的四舍五入的值肯定是有偏差的
然后这个面试题的答案如下:
from decimal import Decimal, ROUND_HALF_UP
def rd(x):
return Decimal(x).quantize(Decimal('0.00'), rounding=ROUND_HALF_UP)
s_input = input()
a,b = s_input.split(";")
s1,s2,s3 = b.split(",")
print("The each subject score of No. %s is %s, %s, %s."%(a,rd(s1),rd(s2),rd(s3)))
内容总结
以上是互联网集市为您收集整理的关于python3四舍五入的问题全部内容,希望文章能够帮你解决关于python3四舍五入的问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。