Недавно я обнаружил, что оператор 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. Раунд (а / б)
? Если нет, объясните, пожалуйста, как на самом деле работает этот оператор.
РЕДАКТИРОВАТЬ: Отвечая Джеймсу Л. , я понимаю, что это оператор по модулю и все такое. Мне любопытно только, как это работает с двойными , целыми числами, которые я понимаю.