C - 双模整数的底数

时间:2010-08-28 10:25:37

标签: c integer double floor modulus

我需要做下面的等式(e%100000),其中e是double。我知道mod只接受int值,我该如何实现同样的结果呢?

由于

4 个答案:

答案 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。