Что такое c# эквивалент Java DecimalFormat?
Как преобразовать следующий код в C#
DecimalFormat form
String pattern = "";
for (int i = 0; i < nPlaces - nDec - 2; i++) {
pattern += "#";
}
pattern += "0.";
for (int i = nPlaces - nDec; i < nPlaces; i++) {
pattern += "0";
}
form = (DecimalFormat) NumberFormat.getInstance();
DecimalFormatSymbols symbols = form.getDecimalFormatSymbols();
symbols.setDecimalSeparator('.');
form.setDecimalFormatSymbols(symbols);
form.setMaximumIntegerDigits(nPlaces - nDec - 1);
form.applyPattern(pattern);
редактировать конкретная проблема заключается в том, что я не хочу, чтобы десятичный разделитель менялся с Locale (например, некоторые локали использовали бы',').
2 ответов
для десятичного разделителя вы можете установить его в NumberFormatInfo
экземпляр и использовать его с ToString:
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";
//** test **
NumberFormatInfo nfi = new NumberFormatInfo();
decimal d = 125501.0235648m;
nfi.NumberDecimalSeparator = "?";
s = d.ToString(nfi); //--> 125501?0235648
чтобы получить результат вашей версии java, используйте ToString()
версия функции с Пользовательские Строки Числового Формата (т. е.: то, что вы назвали модель):
s = d.ToString("# ### ##0.0000", nfi);// 1245124587.23 --> 1245 124 587?2300
// 24587.235215 --> 24 587?2352
В C#число десятичных хранящиеся в decimal
type, с внутренним представлением, которое позволяет выполнять десятичную математику без ошибок округления.
если у вас есть номер, вы можете