Почему .net по модулю работает иначе, чем Windows Calculator для небольших чисел? - PullRequest
0 голосов
/ 04 апреля 2019

Почему 1070 % 21,4 дает разные результаты в калькуляторе Windows и .net?

(. Чистый результат равен 7,1 ....)

Результат всегда должен быть 0. Я понимаю разницу с большими числами, но эти маленькие числа должны работать, ИМХО.

Большое спасибо!

1 Ответ

5 голосов
/ 04 апреля 2019

Это все в документах для оператора%.Остаток с плавающей запятой, а не по модулю.Если вы хотите что-то совместимое с калькулятором, используйте эту функцию

Например:

private static void ShowRemainders(double number1, double number2)
{
   var formula = $"{number1} / {number2}";
   var ieeeRemainder = Math.IEEERemainder(number1, number2);
   var remainder = number1 % number2;
   Console.WriteLine($"{formula,-16} (.IEEE) = {ieeeRemainder,18}");
   Console.WriteLine($"{formula,-16} (.NET)  = {remainder,18}");
}
...