2015-05-13 4 views
0

Я хотел бы округлить число до двух знаков после запятой, но также сохранить оставшиеся 2 нули, например 425.1382 до 425.1400 Я пробовал примеры, но это не так, т, кажется, работаютОкругление до 2 знаков после запятой, но сохранение 4 знаков после запятой в C#

var amount = Math.Round((value * rate), 4); 
profit = Decimal.Parse(amount.ToString("0.####")); 

или

var amount = Math.Round((value * rate), 4); 
profit = Decimal.Parse(amount.ToString("0.##00")); 
+6

Вы разбираете его в десятичной системе. Эти нули исчезнут, когда вы проанализируете его в числовой структуре. Я не уверен, чего вы ожидаете. 4,00 и 4 - одинаковое значение. Круглый номер до двух знаков после запятой. Если вам нужны дополнительные нули позже, отформатируйте его как строку. – Amy

+0

Почему? Конечные нули не влияют на вычисления. Это только когда вы отформатируете число до строки, что число десятичных знаков имеет какое-то значение, и даже тогда, это зависит от функции форматирования, а не от номера –

+0

. Определите, что «это не работает», что не работает? –

ответ

3

При преобразовании в числовой тип вы отказаться от всех ненужных цифр. Перед отображением необходимо преобразовать десятичную строку в строку.

-1

var _profitAmount = Math.Round ((продажаMarginValue * заменаRate), 4); _invoicingCurrencyProfitAmount = Decimal.Parse (profitAmount.ToString(). PadRight (2, '0'));

-2
var d = 425.1382.ToString("0.##") + "00"; // "425.1400" 
0

Линия _invoicingCurrencyProfitAmount = Decimal.Parse(profitAmount.ToString("0.####")) возвращает десятичную. Десятичное число сохраняет все нули, проблема 100% в том, где вы печатаете значение. Если вы пытаетесь написать в Console

Console.Writeline("{0:F4}", _invoicingCurrencyProfitAmount); 

где {0:F4} означает «Формат в фиксированной точке», с четырьмя цифрами после запятой. Конечно, вы можете использовать это в любом месте, используя string.Format.

Смежные вопросы