C、C++、および Java での浮動小数点演算と結合演算

王林
リリース: 2023-08-28 09:09:11
転載
1226 人が閲覧しました

C、C++、および Java での浮動小数点演算と結合演算

C、C、Java では、浮動小数点数を使用して数学的演算を実行します。次に、浮動小数点数が結合規則に従っているかどうかを確認します。

答えは否定的です。場合によっては、浮動小数点数が結合規則に従っていないことがあります。ここでいくつかの例を見てみましょう。

コード例

#include<iostream>
using namespace std;
main() {
   float x = -500000000;
   float y = 500000000;
   float z = 1;
   cout << "x + (y + z) is: " << x + (y + z) << endl;
   cout << "(x + y) + z is "<< (x + y) + z << endl;
}
ログイン後にコピー

出力

x + (y + z) is: 0
(x + y) + z is 1
ログイン後にコピー

ここでは、結果が同じではないことがわかりますが、理論的には常に 1 であると言えます。ここで疑問が生じますが、これはどのように行われるのでしょうか?

最初のケースでは、x (y z)、(500000000 1) が実行されています。ただし、浮動小数点数の場合 四捨五入後、再度 500000000 に変換されます。ここに -500000000 を加えると 0 になります。 2 番目の式では、値は (-500000000 500000000) = 0 で、その後 1 が加算されるため、最終結果は次のようになります。 結果は 1 です。

整数を使用すると、どちらの式も同じ結果 (1) を返します。

以上がC、C++、および Java での浮動小数点演算と結合演算の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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