ホームページ >バックエンド開発 >C++ >モジュラス演算子が C の double で機能しないのはなぜですか?それを修正するにはどうすればよいですか?

モジュラス演算子が C の double で機能しないのはなぜですか?それを修正するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-08 01:57:12848ブラウズ

Why Doesn't the Modulus Operator Work with Doubles in C   and How Can I Fix It?

二重変数で剰余演算子を利用できない

プログラミングでは、整数の後の剰余を計算するために通常、剰余演算子 (%) が使用されます。分割。ただし、この演算子を C の倍精度浮動小数点数に適用しようとすると、オペランドが無効であることを示すエラー メッセージが表示される場合があります。この問題を修正するには、別のアプローチを採用する必要があります。

このエラーは、モジュラス演算子が整数値のみを想定できる整変数を対象としているために発生します。一方、double 変数は小数を表します。 double に対して同様の操作を実行するには、fmod() 関数を使用する必要があります。

fmod() 関数を使用して問題を解決する方法は次のとおりです。

#include <cmath>

int main() {
    double x = 6.3;
    double y = 2.0;
    double z = std::fmod(x, y);
}

fmod()関数は で定義されています。ライブラリであり、モジュラス演算子と同様に動作します。ただし、第 1 オペランド (x) を第 2 オペランド (y) で除算した余りを倍精度浮動小数点数として返します。この関数を組み込むことで、C プログラムで double の剰余演算をうまく利用できるようになります。

以上がモジュラス演算子が C の double で機能しないのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。