ホームページ > バックエンド開発 > C++ > C の剰余演算子 (%) が整数でのみ機能するのはなぜですか?また、小数点以下の剰余はどのように処理すればよいですか?

C の剰余演算子 (%) が整数でのみ機能するのはなぜですか?また、小数点以下の剰余はどのように処理すればよいですか?

Patricia Arquette
リリース: 2024-12-20 21:53:10
オリジナル
759 人が閲覧しました

Why Does C's Modulus Operator (%) Only Work with Integers, and How Can I Handle Fractional Remainders?

C の剰余演算子 (%) が整数でのみ機能する理由

C の剰余演算子 (%) による除算は整数に制限されます整数の除算の固有の性質によるオペランド。整数を割るとき、結果は当然整数になり、余り(商と除数の積を引いた結果)も整数になります。

しかし、実数を扱う場合、「」という概念が重要になります。残り」はさらに複雑になります。次の例を考えてみましょう。

double x = 3.1;
int y = 2;
double remainder = x % y;
ログイン後にコピー

この場合、3.1 を 2 で割ると商 1 と余り 1.1 が得られるため、望ましい結果は 1.1 になります。残念ながら、C の法演算子は x と y の両方を整数として扱うため、整数の剰余は 1.1 ではなく 1 になります。

C でこの問題に対処するには、標準ライブラリの fmod 関数を利用できます。この関数はハイブリッド除算を実行し、オペランドが実数であっても小数部の剰余を返します。例:

#include <math.h>

double x = 3.1;
int y = 2;
double remainder = fmod(x, y);
ログイン後にコピー

これにより、1.1 の正しい剰余が生成され、整数オペランドと実数オペランドの両方に対してモジュラス演算が一貫して動作することが保証されます。

以上がC の剰余演算子 (%) が整数でのみ機能するのはなぜですか?また、小数点以下の剰余はどのように処理すればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート