当前位置: 首页 > news >正文

【趣味测试】

编程过程中遇到的趣味知识

1 Cpp

1.1 浮点数计算

    if (0.1 + 0.2 == 0.3) {std::cout << "0.1 + 0.2 == 0.3 true" << std::endl;} else {std::cout << "0.1 + 0.2 == 0.3 false" << std::endl;}if (0.1 + 0.3 == 0.4) {std::cout << "0.1 + 0.3 == 0.4 true" << std::endl;} else {std::cout << "0.1 + 0.3 == 0.4 false" << std::endl;}// 结果:
0.1 + 0.2 == 0.3 false
0.1 + 0.3 == 0.4 true

在大多数编程语言中,0.1 + 0.2 == 0.3 的结果为 false 并不是因为这两个数在数学上不等于0.3,而是因为浮点数的表示和计算存在精度问题。

浮点数是计算机中用来表示实数的近似值的一种数值表示方法。由于计算机的内存是有限的,所以浮点数并不能精确地表示所有的实数。当我们尝试在计算机中存储或计算浮点数时,它们通常会被转换为最接近的二进制表示形式,这可能会导致微小的精度损失。

在二进制中,有些十进制小数(如0.1和0.2)不能精确地表示,因此它们会被存储为最接近的二进制浮点数。当这些不精确的浮点数相加时,结果可能会与预期的精确值略有偏差。

为了解决这个问题,我们通常不会直接比较两个浮点数是否相等,而是检查它们之间的差值是否小于某个很小的阈值(称为“epsilon”)

bool IsEqualFloat(float left, float right, float epsilon = 1e-9)
{return abs(left - right) < epsilon;
}
http://www.lryc.cn/news/378075.html

相关文章:

  • 数据结构经典面试之数组——C#和C++篇
  • docker的基本知识
  • React Native性能优化红宝书
  • 后端不提供文件流接口,前台js使用a标签实现当前表格数据(数组非blob数据)下载成Excel
  • 如何使用ChatGPT辅助设计工作
  • hadoop服务器启动后无法执行hdfs dfs命令
  • Flink 1.19.1 standalone 集群模式部署及配置
  • 【深度学习】GELU激活函数是什么?
  • 如何编译和运行您的第一个Java程序
  • vscode用vue框架写一个登陆页面
  • 腾讯云API安全保障措施?有哪些调用限制?
  • 在建设工程合同争议案件中,如何来认定“竣工验收”?
  • Linux:多线程中的互斥与同步
  • 数据仓库之主题域
  • 【简易版tinySTL】 vector容器
  • BRAVE:扩展视觉编码能力,推动视觉-语言模型发展
  • 使用 Verdaccio 建立私有npm库
  • 个人职业规划(含前端职业+技术线路)
  • LeetCode | 344.反转字符串
  • 一步一步用numpy实现神经网络各种层
  • vue学习(二)
  • Maven 介绍
  • QT截图程序三-截取自定义多边形
  • Unity的三种Update方法
  • [Python学习篇] Python字典
  • react项目中如何书写css
  • PostgreSQL源码分析——绑定变量
  • Zynq学习笔记--了解中断配置方式
  • 吴恩达机器学习 第二课 week2 多分类问题
  • 112、路径总和