admin 管理员组文章数量: 887021
使用函数调用方式解决:输入三个正整数a,b,n,求a/b精确到小数后第n位。
计算机在计算除法时,如果不能整除,会得到一个精确度有限的小数,但我们可以通过字符串的方式突破精度显示限制
一、分析结构
- 形参:a,b,n
- 分别对应:被除数,除数,精确的小数位
- 概要:计算每一位的值后通过字符串形式拼接为结果
二、解决问题
1.定义函数
def _precise(a, b, n):
2.定义变量s(结果)并赋初值(即:字符串开头,例如:3.1415926…开头为“ 3. ”),整数部分即为a//b(取整部分)
s = str(a // b) + '.'
3.定义余数r
r = a % b
4.定义循环步进i
i = 0
5.定义循环来计算期望精度值,每一次循环计算一位小数(也可以在i<n后加上“and r != 0”,来确保在余数为0时停止循环)
while i < n:
6.编写循环体:
余数r = a % b,在第一次循环时将r(余数)扩大十倍后再除以b(除数)取整后得到第一位小数(以字符串拼接的形式拼接给s)
例:
20 / 3 第一次循环时等于:“6.” + “6”,第一次结束后s=“6.6”(字符串形式)
r = r * 10
s = s + str(r//b)
7.每次循环后,r又会获得新的值(即:原来的r * 10后除以 b 的余数)
例:还是拿上面的20/3举例,第一次循环时r = 2 * 10=20,除以b(也就是3)后,得到第一位小数6并且余下2,执行完**s = s + str(r//b)**后r = 20 % 3 = 2,然后等待下一次循环开始
r = r % b
8.设置步进i,循环体完成
例:比如用户输入的n = 10,i每次加1,加到9时停止,从0-9刚好10次循环,每次循环执行一次步骤6和7求出一位小数,10次刚好精确到第十位停止。
i = i + 1
9.最后输出s即可
print(s)
三、完整代码
def _precise(a, b, n):s = str(a // b) + '.'i = 0r = a % bwhile i < n:r = r * 10s = s + str(r//b)r = r % bi = i + 1print(s)#举例调用函数
_precise(6, 7, 6)
#即6除7取6位小数
#结果为 0.857143
本文标签: 使用函数调用方式解决输入三个正整数a b n,求ab精确到小数后第n位
版权声明:本文标题:使用函数调用方式解决:输入三个正整数a,b,n,求ab精确到小数后第n位。 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1687785326h141160.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论