【发布时间】:2019-01-28 22:57:13
【问题描述】:
我有一个任务,我需要检查某些用户输入的双倍是否是 0.05 的倍数。
例如,如果他们输入 1.96,他们会得到一个错误。但是如果他们进入1.95,那么就会进入下一步。
我尝试过不同的想法
double price;
cin >> price;
int multiple = ((int)(price * 100)) % 5;
if (multiple == 0)
{
cout << "This is a multiple of 0.05" << endl;
}
else if (multiple != 0)
{
cout << "No multiple" << endl;
}
有没有办法做到这一点?而且价格需要翻倍。由于我正在做的任务是一个自动售货机项目,它需要硬币并返回零钱。
【问题讨论】:
-
为什么要将 5 乘以 两次?
-
您是指 if else 语句吗?一个是看数是不是倍数,一个是相反的。
-
if (multiple == 0)还不够吗? -
顺便说一句,由于您使用硬币,因此可能的最小值为 1 美分,因此您不必使用双精度数,而是使用一个整数以保持美分的值(如果它会让您的生活更轻松)。
-
您提到的要求并不意味着您需要
double。这类赋值的一个要点是发现浮点对这类问题没有好处,您需要找到一种方法来处理整数。