繁体   English   中英

C#String.Format()-数字格式不起作用

[英]C# String.Format() - number format doesn't work

这个问题尝试了所有不同的解决方案后,似乎并没有给我想要的格式(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: 这里有更多的“缺失”数据,可以更好地了解情况

添加一个额外的步骤来验证double.Parse()工作方式。 可能会有一些惊喜。 其中之一可以是整数值和小数之间的分离炭: ,.

// step 1: verify your string taken from excel
var cellString = dataBlock.ValueCell.Value.ToString();
// if you have a blank space there, remove it
cellString = cellString.Replace(' ', '');

// step 2: verify your double converted value
var doubleValue = double.Parse(cellString);
Console.WriteLine("doubleValue = " + doubleValue);

// step 3: verify the formatting
var formattedValue = doubleValue.ToString("#.##0");
Console.WriteLine("formattedValue = " + formattedValue);

dataBlock.ValueCell.Value = formattedValue;

查看实际数据后进行编辑:从单元格获取的字符串中有一个空格。 您可以通过添加另一步骤来验证

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM