Python浮点舍入错误[重复]

2023-12-27

使用列表理解表达式时:

[x * 0.1 for x in range(0, 5)]

我希望得到这样的列表:

[0.0, 0.1, 0.2, 0.3, 0.4]

然而我却得到了这个:

[0.0, 0.1, 0.2, 0.30000000000000004, 0.4]

这背后的原因是什么?


几乎每种语言中的浮点数本质上都是不精确的

如果您需要精确的精度,请使用Decimal http://docs.python.org/2/library/decimal.html class

from decimal import Decimal
print Decimal("0.3")

如果您只需要它们看起来漂亮,只需在显示时使用格式字符串 例如:

"%0.2f"%2.030000000000034

如果你想比较它们使用一些阈值

if num1 - num2 < 1e-3 : print "Equal Enough For Me!"

**请参阅 abarnert 对阈值的评论...这是一个非常简化的示例,用于更深入地解释 epsilon 阈值,我在这里找到了一篇文章http://www.cygnus-software.com/papers/comparingfloats/Comparing%20floating%20point%20numbers.htm http://www.cygnus-software.com/papers/comparingfloats/Comparing%20floating%20point%20numbers.htm

补充阅读:

http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html(详细解释)

http://floating-point-gui.de/basic/ http://floating-point-gui.de/basic/(一般使用浮动的基本教程)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python浮点舍入错误[重复] 的相关文章

随机推荐

  • java.lang.RuntimeException: CronExpression '4 27 11 ? 8? 2014' 无效,

    将此作为无效的 CronExpression 无法弄清楚为什么 转介http www quartz scheduler org documentation quartz 1 x tutorials crontrigger http www
  • 将类型参数约束为基类型

    我知道如何强制类型参数成为subtype另一种类型 public interface IMapping
  • Zend Zend_File_Transfer_Adapter_Http重命名问题

    我有一个关于在 Zend 中上传文件后重命名文件的问题 我不知道将重命名过滤器放在哪里 这就是我所拥有的 我尝试过移动东西 但我迷路了 目前 它确实将文件上传到我的照片文件夹 但没有重命名 谢谢你的帮助 if this gt request
  • iOS 上 UIVIew 和 CALayer 关于背景图片的关系

    试图理解UIView和CALayer之间的关系 我阅读了Apple文档 但它没有详细描述两者之间的关系 为什么当我添加背景图像来查看 自定义 ViewController view 时 我会得到不需要的图像黑色 当我将背景图像添加到 cus
  • TypeScript:抑制类型上不存在属性

    我在使用 TypeScript 时遇到了以下问题 有一个模块 它使用一个函数myApp common anotherFunc 来自 旧 js 代码 module myApp export module helpers export clas
  • AngularJS:隐藏 ng-message 直到点击表单提交按钮

    这是 AngularJS 1 x 中使用 ng messages 的典型示例
  • C#.NET - 如何让 typeof() 与继承一起使用?

    我将首先用代码解释我的场景 public class A public class B A public class C B public class D public class Test private A a new A privat
  • 在指令中使用 $compile 会触发 AngularJS 无限摘要错误

    关于为什么该指令会触发无限摘要错误有什么想法吗 http jsfiddle net smithkl42 cwrgLd0L 13 http jsfiddle net smithkl42 cwrgLd0L 13 var App angular
  • Compose Spacer 与视图填充性能

    我更喜欢使用 Spacer 在视图之间添加一些填充 有时您可以将此空间添加为视图的填充 所以我的问题是 使用 Spacers 与使用旧的填充值相比是否存在性能缺陷 性能会有所不同 在下面的测试中 50 个项目使用填充进行渲染 随后 50 个
  • 使用 XML 文件中的数据生成 Word 文档 (docx) / 基于模板将 XML 转换为 Word 文档

    我有一个 XML 文件 其中包含需要填充到 Word 文档中的数据 我需要找到一种方法来定义一个模板 该模板可以用作从 XML 文件填充数据并创建输出文档的基线 我相信有两种方法可以做到这一点 创建一个将作为 模板 的 XSLT 文件 并使
  • Oracle REGEXP_REPLACE 大写替换字符串

    我试图将我的 reg 表达式中的替换字符串大写 但没有成功 SELECT regexp replace src i uie v2 js uie v2 upper 1 from dual returns src i uie v2 js 我知道
  • CountDownLatch 的latch.await() 方法与Thread.join() 方法

    我看到一位 stackoverflow 成员建议使用 Thread join 让 主 线程等待 2 个 任务 线程完成 我经常会做一些不同的事情 如下所示 我想知道我的方法是否有任何问题 final CountDownLatch latch
  • 禁用 cookie 时会话还能工作吗?

    如果用户在浏览器中禁用了 cookie 会话还能工作吗 因为我知道当我创建会话时客户端中有一个会话 cookie 会话 ID 可以附加到 URL 所以 是的 他们可以 查看here http www webmasterworld com f
  • 在 OpenGL 中旋转三角形

    我正在尝试围绕其中心点旋转三角形 我知道 OpenGL 围绕原点旋转 因此我需要将中间点平移到原点 然后旋转 然后平移回来 我已经注释掉了最后一行 以确保它至少绕原点的中心旋转 它不是 尽管进行了翻译 但它似乎围绕其旧原点旋转 请注意 cc
  • Java ConcurrentHashMap 中增加分区数量的缺点?

    Java ConcurrentHashMap 在内部维护分区 每个分区可以单独加锁 在某些情况下 多个线程访问的所有键都落入同一分区 而分区可能没有帮助 进一步增加分区数量应该会提高并发性 为什么 Java 为分区计数提供默认值 16 而不
  • 如何检查是否支持naturalWidth?

    我有以下 jQuery 并想测试是否支持naturalWidth function special image if typeof this naturalWidth undefined do something 但这似乎不起作用 有任何想
  • 以日期时间字符串作为 x 值的等值线图

    我正在尝试生成一个颜色等值线图 其中 x 轴显示时间 y 轴深度 z 值显示温度 时间给出如下 2011 01 01 00 01 i e Y m d H M 有没有一种方法可以从中生成颜色等高线图 并使用 filled contour Ti
  • 更新已安装包中的数据集

    是否可以更新本地已安装软件包中的数据集 我维护的包有一个基于定期更新数据的数据集 我想更新数据集的本地版本并将更改保存回包中 以便下次加载数据时 即data xxx 将加载数据集的更新版本 从中长期来看 我将更新软件包 然后将新版本上传到
  • 如何返回带有错误消息或异常的 NotFound() IHttpActionResult?

    我正在返回 NotFoundIHttpActionResult 当我的 WebApi GET 操作中找不到某些内容时 除了此响应之外 我还想发送自定义消息和 或异常消息 如果有 目前的ApiController s NotFound 方法不
  • Python浮点舍入错误[重复]

    这个问题在这里已经有答案了 使用列表理解表达式时 x 0 1 for x in range 0 5 我希望得到这样的列表 0 0 0 1 0 2 0 3 0 4 然而我却得到了这个 0 0 0 1 0 2 0 300000000000000