Скоростное округление чисел - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Есть деление целых чисел, но результат должен быть не усечён, а округлён. Самое очевидное решение:
Листинг программы
  1. int a = 1;
  2. int b = 2;
  3. int c = (int)Math.Round((double)a / (double)b, MidpointRounding.AwayFromZero);
Но оно не самое быстрое. Как можно ускорить?

Решение задачи: «Скоростное округление чисел»

textual
Листинг программы
  1. using System;
  2. using System.Diagnostics;
  3. using System.Runtime.CompilerServices;
  4.  
  5. namespace Test
  6. {
  7.    class Program
  8.    {
  9.       static void Main(string[] args)
  10.       {
  11.          long pass = 1000000000;
  12.          int a = GetA();
  13.          int b = GetB();
  14.          int c = 0;
  15.  
  16.          Stopwatch sw1 = Stopwatch.StartNew();
  17.          for(long i = 0; i < pass; ++i)
  18.          {
  19.             c = (a * 2 / b + 1) / 2;
  20.          }
  21.          sw1.Stop();
  22.  
  23.          Stopwatch sw2 = Stopwatch.StartNew();
  24.          for(long i = 0; i < pass; ++i)
  25.          {
  26.             c = (int)Math.Round((double)a / (double)b, MidpointRounding.AwayFromZero);
  27.          }
  28.          sw2.Stop();
  29.  
  30.          Console.WriteLine($"зайчик: {sw1.Elapsed}");
  31.          Console.WriteLine($"черепашка: {sw2.Elapsed}");
  32.          Console.ReadKey();
  33.          GC.KeepAlive(c);
  34.       }
  35.  
  36.       [MethodImpl(MethodImplOptions.NoInlining)]
  37.       private static int GetA() => 500;
  38.  
  39.       [MethodImpl(MethodImplOptions.NoInlining)]
  40.       private static int GetB() => 1000;
  41.    }
  42. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы