我如何检查double是否是5的倍数

How can i check if double is multiple 5?

本文关键字:是否是 double 何检查 检查      更新时间:2023-10-16

如何检查双精度(到2位小数)是否为5的倍数??

众所周知,%运算符不适用于双重数据类型。。

fmod()似乎不太可靠。。。。

我想做的是检查payment是否是.05的倍数。

这就是我在fmod()中尝试的,其中remainderpayment都是双

remainder = fmod(payment, 5)

当我使用诸如;之类的小小数时。05,.10,.15,.20即使我使用,我也能得到指数表示法

   cout << setiosflags(ios::showpoint) << setprecision(3) << modulo << "  space   " << payment << endl; 

不确定我做错了什么

正如您所了解的,fmod()并没有多大帮助。这是由于计算机存储浮点数的方式造成的。请参阅此处了解更多信息。

这里的正确解决方案是选择一些整数货币单位。真正的银行可能会选择0.00001美元作为整数单位。对你来说,用.01美元作为整数单位可能就足够了。

这意味着,如果我们想存储用户欠$10.05的钱,我们会将其存储为:

int owed = 1005;

一旦你这样做了,就很容易在数字上使用%,也很容易得到准确的结果。

关于:

int余数=((int)(付款*100))%5

正如@Angew所说,永远不应该使用双精度来表示货币价值。相反,使用整数将值表示为美分的数量。

也就是说,你应该做的是将答案乘以100,然后四舍五入到最接近的整数,然后计算模5。

((int)(payment*100 + 0.5)) % 5