Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 1|Відповідь: 0

[Чайови] .NET/C# використовує MidpointRounding у Math.Round для округлення

[Копіювати посилання]
Опубліковано46 секунд тому | | | |
Вимоги: Часто використовується для округлення і не дуже чутливий до вимог до точності.

Щоб досягти округлення двох знаків після десятки, розробник написав наступний код,
Код дуже простий, розробникиФактичний результат був 12.12, що суперечило очікуваному результату округлення 12.13

Причина такого результату полягає в тому, що Math.Round за замовчуванням не використовує правило округлення, а раунди для отримання парних результатів.

Округли до п'яти, щоб зробити пару

Так зване округлення від шести до п'яти для отримання пари означає, що після визначення значущих цифр, якщо наступна значуща цифра менша або дорівнює 4, її округлюють вниз; якщо вона більша або дорівнює 6 — округлюють вгору на один. Коли наступна значуща цифра дорівнює 5,

  • Якщо число перед 5 непарне, округли п'ять і далі на одиницю
  • Якщо 5 перед парним числом, пропустіть 5 (0 — парне).

Статистично округлення до парного є точнішим, ніж округлення до п'яти, оскільки при великій кількості обчислень округлення кожних п'яти до одного може призвести до більшого числа.

Наприклад:

1,15+1,25+1,35+1,45 = 5,2

Якщо значні цифри дорівнюють одному знаку після десятки, результат отримується за принципом округлення

1,2 + 1,3 + 1,4 + 1,5 = 5,4

Результат, отриманий округленням до п'яти парних чисел, має вигляд

1,2 + 1,2 + 1,4 + 1,4 = 5,2

Це показує, що правило округлення дає більш точні результати.

Math.Round

Отже, як ви використовуєте Math.Round для досягнення очікуваного округлення?

Насправді, Math.Round у C# пропонує багато методів перевантаження, зокрема два методи:
Обидва методи надають третій параметр, який називається mode, який є перелічувальною змінною MidpointRounding з двома вибраними значеннями

  • AwayFromZero — округлення
  • ToEven — округлення до рівного округлення

Отже, якщо ми хочемо ідеально округлений результат, можна використати наступний код:
Середня точка Округлення перерахування, як показано нижче:



Посилання:Вхід за гіперпосиланням видно.




Попередній:Оптимізація WITH (NOLOCK) для запитів EF Core з високою паралелізацією
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com