<分区>
我在使用 std::floor 时注意到一些非常奇怪的事情。我正在 ubuntu 上编译 C++。我正在尝试将 double 值降低到最接近的百分之一,并且正在检查输入值已经四舍五入到最接近的百分之一的情况,但我得到的结果不一致。
我的代码:
double hundredthFloor(double value){
double hundredth = 0.01;
return hundredth * std::floor( value / hundredth);
}
在大多数情况下它是有效的,
value = 99.87 gives output 99.87
value = 99.879 gives output 99.87
value = 0.39 gives output 0.39
但是:
value = 0.29 gives value 0.28
value = 0.47 gives value 0.46
我尝试了很多输入值,到目前为止,似乎只有 0.29 和 0.47 的输出值比我的预期低一位小数。
有人见过类似的东西吗?