鱼C论坛

 找回密码
 立即注册
查看: 543|回复: 3

列表下的最后一道课后作业,怎么改可以精确计算浮点数

[复制链接]
发表于 2024-5-25 00:06:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. times = [1, 3, 3.5, 6.5, 9.5, 10, 10.8]
  2. names = ["A", "B", "C", "D", "E", "F", "G"]
  3. _ = []
  4. for i in range(len(times)):
  5.     if i == 0:
  6.         _.append(times[i])
  7.     else:
  8.         _.append(times[i] - times[i - 1])
  9. print("速度最快的是:", names[_.index(min(_))], "耗费时间是", min(_))
  10. print("速度最快的是:", names[_.index(max(_))], "耗费时间是", max(_))
复制代码

我的代码如上,但是这样_列表里面不是精确的浮点数,容易有误差,要怎么改成精确的浮点数计算呢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-5-25 00:06:43 | 显示全部楼层
在 Python 中,浮点数的计算往往会出现一些误差。这是由于浮点数的存储方式决定的。要避免浮点数计算的误差,可以使用 decimal 模块来进行精确的浮点数计算。

以下是修改后的代码示例:

  1. from decimal import Decimal

  2. times = [1.23, 2.34, 3.45]
  3. names = ["A", "B", "C"]
  4. _ = []

  5. for i in range(len(times)):
  6.     if i == 0:
  7.         _.append(Decimal(times[i]))
  8.     else:
  9.         _.append(Decimal(times[i]) - Decimal(times[i-1]))

  10. fastest_index = _.index(min(_))
  11. slowest_index = _.index(max(_))

  12. print("速度最快的是:", names[fastest_index], "耗费时间是", min(_))
  13. print("速度最慢的是:", names[slowest_index], "耗费时间是", max(_))
复制代码


在代码中,我们首先从 decimal 模块导入了 Decimal 类。然后,通过将浮点数转换成 Decimal 对象,在进行计算时可以得到精确的结果。

另外,我还做了一些优化:使用 `_.index()` 方法找到最快和最慢耗时对应的索引,然后通过索引找到对应的名称,最后打印结果。

希望能帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-25 10:26:39 | 显示全部楼层
绝了门子的AI,之间上的这个 decimal 模块  太精确了牛批 学到了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-26 17:11:26 From FishC Mobile | 显示全部楼层
本帖最后由 cjjJasonchen 于 2024-5-26 17:15 编辑

如果不会用这个库的话可以试试把小数转(下用y表示)化成字符串。

先找到每个y的小数点的位置(下用x表示),如果没有小数点可以直接跳过。

全部找好后通过max函数找到最大的x,然后用这个
x*10*每个y  来将所有y转化成整数。

计算完成后再/x(从整数变回小数),就能得出精确到结果。

这种方法缺点是效率略差
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 03:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表