IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:精度

共 2 篇相关文章

IT 累计浏览 3,796

编写安全代码:小心使用浮点数

这篇讲的是浮点数在实际编码中潜藏的风险,以及如何写出更安全的代码。作者从浮点数的二进制表示原理出发,解释了为什么像0.1这样的简单小数在计算机里无法被精确存储,进而可能引发比较判断失效、累加误差扩大等隐蔽问题。文章重点对比了浮点数与整数(或高精度库)在财务计算等场景下的差异,指出在需要精确值的领域(如金额处理、循环计数)盲目使用浮点数是常见错误根源。同时,它也分析了浮点数在科学计算等可接受误差范围的场景下仍然适用,但必须理解其误差传播机制。作者最终给出了一系列实用建议:比如避免用==直接比较浮点数,改用范围判断;在关键业务中考虑使用定点数或Decimal类型;以及如何通过单元测试捕捉由浮点运算引发的边界问题。整篇文章将底层原理与编码实践紧密结合,为开发者提供了一份规避常见陷阱的清晰指南。

IT 累计浏览 3,889

[python]定制JSON中的浮点数格式

这篇讲的是Python中一个相当恼人但常被忽视的问题:当你用 `json.dumps` 将列表或字典序列化时,其中的浮点数往往会变成一堆冗长的小数。作者从这个具体的痛点出发,演示了如何通过 `json.dumps` 的 `cls` 参数传入自定义的编码器类,来精确控制浮点数的输出格式。 文章的核心对比在于默认行为与定制化后的效果。默认情况下,`0.1` 可能被序列化为 `0.1`,但 `0.333` 却变成了 `0.33300000000000002`,这种不一致性会带来困扰。通过继承 `json.JSONEncoder` 并重写 `encode` 方法,你可以统一指定格式,比如将所有浮点数限制在两位小数:`0.333` 就会变成 `0.33`。这种技巧在处理价格、坐标等对精度格式有明确要求的场景下非常实用,能让生成的JSON既整洁又可靠。