在 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了。 在第二個表達式中,值為 (-500000000 500000000) = 0,然後加 1,因此最終結果 結果是 1。
如果我們使用整數,那麼兩個表達式將會傳回相同的結果,即 1。
以上是在C、C++和Java中的浮點運算與結合性的詳細內容。更多資訊請關注PHP中文網其他相關文章!