【发布时间】:2015-09-15 08:04:49
【问题描述】:
尝试了 this question 的所有不同解决方案后,它似乎没有给我想要的格式 (1.000.000 | 1.234)。
我试过这个:
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:添加了 Nikita 的回答 [Works]
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 是更多“缺失”的数据,以便更好地了解情况
【问题讨论】:
-
是的,这就是我在第一句话的超链接中提到的,我已经尝试了那里的所有解决方案。
-
你为什么用 Parse(),只用字符串格式试试。
-
@Nikita i.imgur.com/Oo0qRGy.png
-
你检查过 .ToString("N",new CultureInfo("is-IS")) 吗??
标签: c# .net number-formatting string.format