1

次の方程式floor(e%100000)を実行する必要があります。ここで、eはdoubleです。modはint値のみを受け入れることを知っていますが、これと同じ結果を達成するにはどうすればよいですか?

ありがとう

4

4 に答える 4

3

最初に床を取り、次にmodを取りませんか。floor(e) % 100000

おそらく私はあなたが達成しようとしていることを誤解しました。期待する入力と出力の例を教えてください。

于 2010-08-28T10:29:14.340 に答える
3

fmodを使用する

于 2010-08-28T10:30:10.407 に答える
3

fmod()の代わりに関数を使用してください%。パラメータを受け取りdoubledouble結果を返します。

于 2010-08-28T10:30:42.953 に答える
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

もちろん、これは組み込みのモジュロよりもはるかに低速です...

fmodAnders K.が提案したように、を使用することもできます:)

編集

printf(C)を使用するようにstd :: cout(C ++)参照を修正しました。出力の変更を修正しました。今では純粋にCです。

于 2010-08-28T10:45:42.543 に答える