【发布时间】:2015-03-21 19:17:22
【问题描述】:
如何检查双精度(到小数点后 2 位)是否是 5 的倍数??
众所周知,% 运算符不适用于双精度数据类型。
和
fmod() 似乎不太可靠....
我想要做的是检查 payment 是否是 0.05 的倍数。
这就是我正在尝试使用 fmod() 的方法,其中 remainder 和 payment 都是双精度数
remainder = fmod(payment, 5)
当我使用小数时,例如; .05, .10, .15, .20 我得到指数符号,即使我使用
cout << setiosflags(ios::showpoint) << setprecision(3) << modulo << " space " << payment << endl;
不知道我做错了什么
【问题讨论】:
-
名称
payment表示您正在处理金钱问题。您应该永远用浮点数表示货币。改为使用固定精度类型。