UVA10464 Big Big Real Numbers 题解
UVA10464 Big Big Real Numbers题目描述Link: https://uva.onlinejudge.org/index.php?optioncom_onlinejudgeItemid8category16pageshow_problemproblem1405PDF输入格式输出格式输入输出样例 #1输入 #18 1111.332 1123.1112 .223 9.8963 0.002331 .0012 1111.20000 1.0000 004112.000 21.00 .123 .001 3.333 -1.111 -1.111 3.333输出 #12234.4432 10.1193 0.003531 1112.2 4133.0 0.124 2.222 2.222Solution1. 题意多组数据每组数据中计算两个高精度小数的和两个小数的小数点左右最多有 1000 位有效数字。2. 分析此种涉及到小数的高精度问题可以使用 Python 的 decimal 模块解决。由于题目保证不会出现不合法的输入因此将每行输入的两个小数利用 Decimal 的构造函数转化为大浮点数类型然后直接相加运算求出结果即可。需要注意的是Python 的 Decimal 模块计算时默认保持 28 位的数值精度顺便说一下C# 内置的 decimal 类型也是 28 位精度一般用于财务计算由于小数点前后最多有 1000 位因此需要将getcontext().prec设置为 2000 以上的值以保证足够的精度利用 Decimal 模块的normalize()成员函数可以让小数按照普通的格式而非科学计数法格式输出。需要说明的是使用normalize()时如果计算结果为整数是不会输出小数点的因此出现此种情况需要人为加上一个.0。3. 代码fromdecimalimport*getcontext().prec2400# 2400位数值精度tint(input())foriinrange(t):p,qinput().split()pDecimal(p)qDecimal(q)resultstr((pq).normalize())print(resultif(.inresult)elseresult.0)# 特判
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2611693.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!