2009-12-28 114 views

回答

7

試試fmod函數。

+2

+1。 「使用模運算符」效果的答案錯過了模的運算與fmod不同的地方。 – 2009-12-28 23:21:49

+0

需要18個字符才能在C#中表達C++可以在四個中表達什麼。這就像一個寓言。 – Crashworks 2009-12-28 23:34:55

+1

@Crashworks:的確如此。 C#使用18個字符來清晰地表達意圖,而C++將這聽起來像一個詛咒。 – 2009-12-28 23:39:54

1

雖然被標記爲答案,但SLak的答案並不正確。

是既計算模數,但它們在如何處理符號方面有所不同。 (即John Feminella是正確的)。實現(和MSDN文檔的鏈接)可以在這裏找到:

Is Math.IEEERemainder(x,y) equivalent to x%y?

注意,IEEERemainder()函數在IEEE標準方式實現模 - 而不是什麼在後面K個& [R思想70年代初。

2

在C++ 11標準庫中,std::remainder(x,y)現在是C++的Math.IEEERemainder(x,y)在C++中的等效函數。

來自:http://en.cppreference.com/w/cpp/numeric/math/remainder

計算浮點除法運算的IEEE其餘x/y

的IEEE其餘是x–(round(x/y)*y)

鑑於,fmod餘數是x - trunc(x/y)*y,這可以導致不同的答案,如t中提出的答案他的問題:Why am I getting a different result from std::fmod and std::remainder

如果你真的想要得到的IEEE定義的其餘部分,你需要std::remainder(x,y)(或定義自己的功能,如果你不能使用C++ 11)

相關問題