我如何检查double是否是5的倍数
How can i check if double is multiple 5?
如何检查双精度(到2位小数)是否为5的倍数??
众所周知,%运算符不适用于双重数据类型。。
和
fmod()似乎不太可靠。。。。
我想做的是检查payment
是否是.05的倍数。
这就是我在fmod()中尝试的,其中remainder
和payment
都是双
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
相关文章:
- C++LDAP检查用户是否是特定组的成员
- 检查某些类型是否是模板类 std::optional 的实例化
- 将错误返回给调用方而不是立即在 C++ 中抛出错误是否是一种好的做法
- C++标准是否允许<double>在没有开销的情况下实现 std::可选
- 如何检查模板专用化是否是基本模板的子类?
- 如何检查变量是否是C++中的地图?
- C++ Chrono 确定一天是否是周末?
- 将相同共享指针的副本存储在不同的向量中是否是一种好的做法?
- 使用类在C++中存储和列出变量/方法是否是一种好的做法
- 代码在 CodeSignal 中工作不正确。不确定这是否是我的代码缺陷
- 如果 C 函数仍然可以间接执行(通过回调函数),那么将它声明为静态函数是否是一种不好的做法?
- MFC 中的窗口消息管理:添加基类调用是否是强制性的?
- 检查 n2 是否是 n1 的倍数后结果错误,但根本没有错误
- C ++:检查它是否是类中的数字
- 传递给放置 new 的指针是否是指向其对象表示形式的非 UB 指针?
- 使用 SET(C++) 检查两个给定字符串是否是字谜时出现运行时错误
- 从 std::string 到 std::array<char,size> 的 memcopy 额外数据是否是一种未定义的行为?
- 有没有办法检查发送到变量的值是否是正确的类型,而它已经在该变量下?
- 如何检查一个模板是否是另一个模板的类成员
- 我如何检查double是否是5的倍数