Как округлить десятичную дробь для вывода?

StackOverflow https://stackoverflow.com/questions/697977

  •  22-08-2019
  •  | 
  •  

Вопрос

Используя C#, я хочу отформатировать десятичную дробь так, чтобы отображались только два десятичных знака, а затем я возьму эту десятичную дробь и вычту ее до другой десятичной дроби.Я хотел бы иметь возможность сделать это без необходимости сначала превращать его в строку для форматирования, а затем преобразовывать ее обратно в десятичное число.Извините, я забыл это указать, но я не хочу округлять, я просто хочу отрезать последнюю десятичную точку.Есть ли способ сделать это?

Это было полезно?

Решение

Если вы не хотите округлять десятичную дробь, вы можете использовать Decimal.Truncate.К сожалению, он может только обрезать ВСЕ десятичные дроби.Чтобы решить эту проблему, вы можете умножить на 100, усечь и разделить на 100, например:

decimal d = ...;
d = Decimal.Truncate(d * 100) / 100;

И вы можете создать метод расширения, если делаете это достаточное количество раз.

public static class DecimalExtensions
{
  public static decimal TruncateDecimal(this decimal @this, int places)
  {
    int multipler = (int)Math.Pow(10, places);
    return Decimal.Truncate(@this * multipler) / multipler;
  }
}

Другие советы

Вы можете использовать: Math.Round(number,2); округлить число до двух десятичных знаков.

Видеть эта конкретная перегрузка Math.Round Например.

Тогда вам нужно не форматировать его, а округлить.Попробуйте функцию Math.Round.

Взгляни на Математика.Раунд

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top