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

Я использую c#, каждый раз, когда я вставляю 3 десятичных разряда, число округлено, например.

1.538

раунды

к 1,54

Я хочу, чтобы число было, как, например, 1.53 (к двум десятичным разрядам только без любых округлений).

Как я могу сделать это?

6
задан Chris Dunaway 6 July 2010 в 15:19
поделиться

2 ответа

Я полагаю, вы хотите использовать Math.Truncate ()

float number = 1.538
number = Math.Truncate(number * 100) / 100;

Truncate обрезает конечный бит. Однако имейте в виду, что нужно быть осторожным с отрицательными числами.

Это зависит от того, хотите ли вы всегда округлять до 0 или просто обрезать до конца, Math.Floor всегда будет округлять в меньшую сторону до отрицательной бесконечности. Вот сообщение о разнице между ними.

6
ответ дан 10 December 2019 в 02:42
поделиться

Найдено эта ссылка, которая дает хороший фрагмент кода, позволяющий указать количество знаков после запятой вы хотите, как позволяет Math.Round ().

В основном это: -

public static double Floor(this double d, int decimals) {
    return Math.Floor(d * Math.Pow(10, decimals)) / Math.Pow(10, decimals);
}
3
ответ дан 10 December 2019 в 02:42
поделиться