最近我發現C#的操作符%
適用於double。試了一些東西,畢竟想出了這個測試:C#中的「%」操作對於數字類型雙重的含義
class Program
{
static void test(double a, double b)
{
if (a % b != a - b * Math.Truncate(a/b))
{
Console.WriteLine(a + ", " + b);
}
}
static void Main(string[] args)
{
test(2.5, 7);
test(-6.7, -3);
test(8.7, 4);
//...
}
}
這個測試的一切工作。 是a % b
總是等於a - b*Math.Round(a/b)
?如果沒有,請向我解釋這個操作員是如何工作的。
編輯:回答詹姆斯L,我明白,這是一個模運算符和一切。我很好奇它是如何與雙,我理解的整數。
http://en.wikipedia.org/wiki/Modulo_operation – Quasdunk
做了一些更多的測試。事實證明,%b並不總是等同於 - b * Math.Truncate(a/b)。例如,它不適用於1.0和0.1。 – Sergey