次の方程式floor(e%100000)を実行する必要があります。ここで、eはdoubleです。modはint値のみを受け入れることを知っていますが、これと同じ結果を達成するにはどうすればよいですか?
ありがとう
最初に床を取り、次にmodを取りませんか。floor(e) % 100000
?
おそらく私はあなたが達成しようとしていることを誤解しました。期待する入力と出力の例を教えてください。
fmodを使用する
fmod()
の代わりに関数を使用してください%
。パラメータを受け取りdouble
、double
結果を返します。
除算を使用して、モジュロと同等のものを作成できます。
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です。