实验2 理解浮点数运算的误差

一、实验目的:
(1)理解组合数定义式的化简。
(2)理解运算符/和//的区别,理解运算符//的原理。
(3)理解浮点数运算的误差和可能带来的问题。
(4)熟悉函数定义与使用。
(5)熟悉循环结构。
二、实验内容:
阅读并适当增加必要的代码来调试下面的代码,分析代码功能,发现并解决代码中的错误。
# //运算符 源代码
# 提示:这段代码试图计算组合数Ci n,但是由于浮点数除法时精度问题导致结果错误
# C2 5 = 10,但是以下代码计算C2 5的结果是8(cni(5, 2)),为什么?
def cni(n, i):
    minNI = min(i, n-i)
    result = 1
    for j in range(0, minNI):
        result = result * (n-j) // (minNI-j)
return result

错误:return语句缩进不正确;使用符号//

改正:缩进return,改//为/

原因:代码中使用了 // 运算符,它执行的是整数除法,然而,如果 n 和 i 是浮点数,那么在使用 // 运算符之前应该确保它们被转换为整数。

 

b2538d3e8d294ed084d7093154fde5b1.png

 正确答案为10.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值