首页 > 解决方案 > 小数传递给函数时的C++奇怪的舍入

问题描述

我是 C++ 的新手,并且在处理函数方面的问题。我有两个 cpp 文件和一个标头。我的 cpp 文件之一是 main.cpp,其中以下代码是:

a->change(42.57);

然后我有另一个cpp,其中以下更改代码是:

bool Student::change(float mark)

然后是以下代码所在的标题:

bool change(float mark);

当我传入浮点数时,它是 42.57。然而,在它被传入后,它突然变为 42.5699997。有人可以解释为什么会这样吗?

标签: c++

解决方案


42.57是一种double类型。(最近double的是 42.57000000000000028421709430404007434844970703125)。

用于类型42.57ffloat(最近float的是 42.56999969482421875)。

因此,两者都是近似值(float是比 更宽松的近似值double),但至少您的调试器会显示float得更恰当。


推荐阅读