gpt4 book ai didi

c++ - 简单的贪心算法。无限循环

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:38:50 25 4
gpt4 key购买 nike

我写了一个简单的贪心算法,但不知何故它不起作用。

#include <stdio.h>
#include <iostream>
#include <conio.h>

int main(void)
{
float change;
std::cout << "Change: ";
std::cin >> change;
int quantity = 0;
while(change > 0.0){
if(change >= 0.5){
change -= 0.5;
}
else if(change >= 0.25){
change -= 0.25;
}
else if(change >= 0.1){
change -= 0.1;
}
else if(change >= 0.05){
change -= 0.05;
}
else if(change >= 0.01){
change -= 0.01;
}
quantity++;
std::cout << change << std::endl;
}
std::cout << quantity << std::endl;
_getch();
return 0;
}

虽然它适用于 0.5 和 0.25,但不适用于 0.01 或 0.1。 (看起来它返回了一些非常小的数字)我看不出问题出在哪里。

//编辑将所有内容都转换为 int 值以避免下面提到的问题 Zeno

最佳答案

问题很简单:虽然 0.5、0.25、0.125 ……是“精确的” float ,但 0.1、0.01 不是:您比较/减去是错误的。在集合 0.1 ... 0.9 中,唯一“精确”的 float 是 0.5。

(所有这些都假设二进制 float )

关于c++ - 简单的贪心算法。无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18580535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com