Пробуя все различные решения от this question, он, похоже, не дает мне желаемого формата (1.000.000 | 1.234).C# String.Format() - формат номера не работает
Я попытался это:
dataBlock.ValueCell.Value = String.Format("{0:#.##0}", double.Parse(dataBlock.ValueCell.Value)); // 1 234
dataBlock.ValueCell.Value = String.Format("{0:N0}", double.Parse(dataBlock.ValueCell.Value)); // 1 234
dataBlock.ValueCell.Value = String.Format("{0}", double.Parse(dataBlock.ValueCell.Value.ToString("N0"))); // 1 234
//values as I read them from Excel = OLDVALUE
//values as I convert them to the wanted number format = NEWVALUE
//OLDVALUE == 2238,8
//NEWVALUE == 2 239
//OLDVALUE == -5372
//NEWVALUE == -5 372
//OLDVALUE == 3909,6
//NEWVALUE == 3 910
Любые другие решения?
Я мог бы заменить пространство точкой, но это похоже на плохой код.
редактирует
edit1: Я попробовал этот
dataBlock.ValueCell.Value = dataBlock.ValueCell.Value.ToString().Replace(' ', '.');
И это дает мне тот же результат, как же формат строки и заменить не работают?
edit2: добавил ответ Никиту [Работа]
var doubleValue = double.Parse(dataBlock.ValueCell.Value);
Console.WriteLine("doubleValue = " + doubleValue);
var formattedValue = doubleValue.ToString("N0", new CultureInfo("is-IS"));
Console.WriteLine("formattedValue = " + formattedValue);
dataBlock.ValueCell.Value = formattedValue;
дал мне этот выход:
doubleValue = 29300
formattedValue = 29.300
doubleValue = 20300
formattedValue = 20.300
doubleValue = 32360
formattedValue = 32.360
doubleValue = 28300
formattedValue = 28.300
doubleValue = 9000
formattedValue = 9.000
...
Edit3:Here является более 'недостающими' данными, чтобы получить лучшее представление о ситуация
Возможно, дубликат http://stackoverflow.com/questions/105770/net-string-format-to-add-commas-in-thousands-place-for-a-number ? lq = 1 – Steve
Да, это то, что я упомянул в гиперссылке в первом предложении, я пробовал каждое решение там. – Edward
Почему вы используете Parse(), попробуйте использовать только строковый формат. –