.NET 4.x Double с точностью после запятой, но БЕЗ округления - C#

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

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

Надо выполнить некоторые вычисления с точностью после запятой, но из-за округления при использовании Math.Round() ответ выходит не верным. Как это решается?
Листинг программы
  1. double x = 1.75;
  2. double y = x * 0.05; //0.087500000000000008
  3. double z = x * 0.1; //0.17500000000000002
  4. y = Math.Round(y, 2); //0.09, а должно быть 0.08
  5. z = Math.Round(z, 2); //0.18, а должно быть 0.17
  6. MessageBox.Show((x + y + z).ToString()); //2.02, а должно быть 2
Да, можно сам ответ округлить вниз, но при увеличении x погрешность когда-то достигнет 1 и костыль сломается. Был еще вариант c помощью String.Format() и double.Parse(), но этот велосипед все равно округляет до большей сотой.

Решение задачи: «.NET 4.x Double с точностью после запятой, но БЕЗ округления»

textual
Листинг программы
  1. static double myRound(double x, int precision)
  2. {
  3.     return ((int)(x * Math.Pow(10.0, precision)) / Math.Pow(10.0, precision));
  4. }

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


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

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

8   голосов , оценка 4.125 из 5

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

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

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