c++ - 小数传递给函数时的C++奇怪的舍入
问题描述
我是 C++ 的新手,并且在处理函数方面的问题。我有两个 cpp 文件和一个标头。我的 cpp 文件之一是 main.cpp,其中以下代码是:
a->change(42.57);
然后我有另一个cpp,其中以下更改代码是:
bool Student::change(float mark)
然后是以下代码所在的标题:
bool change(float mark);
当我传入浮点数时,它是 42.57。然而,在它被传入后,它突然变为 42.5699997。有人可以解释为什么会这样吗?
解决方案
42.57
是一种double
类型。(最近double
的是 42.57000000000000028421709430404007434844970703125)。
用于类型42.57f
。float
(最近float
的是 42.56999969482421875)。
因此,两者都是近似值(float
是比 更宽松的近似值double
),但至少您的调试器会显示float
得更恰当。
推荐阅读
- python - 使用 input().split() 进行列表理解
- c++ - 从 csv 文件自动确定 2d 矢量大小
- python - KivyMD - 下拉菜单:AttributeError:“超级”对象在中没有属性“__getattr__”
- c# - 使用 HMAC384 生成对 Nominex 的请求
- python - 如何使用 Mongo Engine 从 MongoDB 获取最新的数据库集合
- r - 为什么我的用于交叉验证的 for 循环不断在测试数据上返回相同的预测值?
- zsh - 在一个命令中生成 shell 和源
- azure - 通过数据工厂将 S3 文件复制到 Azure Blob 存储时如何保留修改日期
- python - python:如何从二维图像中构造一个稀疏矩阵?
- typescript - 试图声明一个函数,得到错误 TS2384: Overload signatures must all beambient or non-ambient