【发布时间】:2022-12-11 04:10:50
【问题描述】:
我是 C++ 的新手 我有一个时间变量,在 while 循环中每次变化 0.01。 我正在尝试检测特定时间,但即使条件相同,C++ 也不会进入 if 条件。
void matchCashiers(){
queue<int> cashierQueue = createCashierQueue(cashier);
double time = 0;
while(time<1){
if(time == arrival_times.front()){
cout << "cashier is full";
cashierQueue.pop();
arrival_times.pop();
}
if(time == 0.71){ // when time equals to 0.71
cout << "cashier is free"; // there is no cashier is free print.
cashierQueue.push(1);
customer_times.pop();
}
cout << time <<endl;
time = time + 0.01;
}
}
是因为我使用双数据类型吗?
【问题讨论】:
-
time等于0.71的可能性极小,即使您认为它应该等于。如果您尝试将0.01添加到自身 71 次,它尤其不会等于0.71。请查看建议的副本以了解原因。 -
是的,浮点运算是不准确的,不同的浮点数可以打印相同的。切勿将浮点数用于金钱。以美分(或便士或其他)计算你的钱并使用整数.
-
不要为 C++ 问题标记 C。
标签: c++