我需要做下面的等式(e%100000),其中e是double。我知道mod只接受int值,我该如何实现同样的结果呢?
由于
答案 0 :(得分:3)
你为什么不先发言,然后是mod,即。 floor(e) % 100000
?
也许我误解了你想要实现的目标。你能给出你期望的输入和输出的例子吗?
答案 1 :(得分:3)
使用fmod
答案 2 :(得分:3)
使用fmod()
功能代替%
。它接受double
个参数,并返回double
个结果。
答案 3 :(得分:0)
您可以使用除法来模拟模数:
double e = 1289401004400.589201;
const double divisor = 100000.0;
double remainder = e - floor(e / divisor) * divisor;
double result = floor(remainder);
printf("%f\n", result);
打印
4400.000000
当然,这比任何内置模数都要慢得多......
您也可以使用fmod
,正如Anders K.建议的那样:)
修改强>
修复了使用printf(C)的std :: cout(C ++)引用。修正了输出的变化。现在它纯粹是C。