C# 将小数点修改为2位小数,除非小数点超过2位
所以这是一个有点挑剔的问题。我四处寻找类似的问题,但找不到一个能具体回答我问题的 我正在制作一个winforms应用程序,它从数字上下菜单中获取数据,并将其放入Word docvariables中。数字上下浮动的精度为4位小数,因为有些价格如00125欧元,例如打印合同。但其他价格将节省下来,例如125000欧元。我目前将数字固定为两位小数,如下所示:C# 将小数点修改为2位小数,除非小数点超过2位,c#,winforms,decimal,C#,Winforms,Decimal,所以这是一个有点挑剔的问题。我四处寻找类似的问题,但找不到一个能具体回答我问题的 我正在制作一个winforms应用程序,它从数字上下菜单中获取数据,并将其放入Word docvariables中。数字上下浮动的精度为4位小数,因为有些价格如00125欧元,例如打印合同。但其他价格将节省下来,例如125000欧元。我目前将数字固定为两位小数,如下所示: string value = type.GetValue().ToString().Trim(new char[] { '\'' }); //C
string value = type.GetValue().ToString().Trim(new char[] { '\'' });
//Changes commas for European standard and removes the excess zeros after the comma.
if (type.GetType().ToString().EndsWith("Decimal"))
{
string s;
string sep = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
if (sep == ".")
s = double.Parse(value).ToString("n2").Replace('.', ',');
else
s = double.Parse(value).ToString("n2");
wordDoc.Variables[type.GetName()].Value = s;
}
else
wordDoc.Variables[type.GetName()].Value = value;
但我似乎不知道如何检测小数点何时不应该被修剪。我不一定需要代码示例,如果有人能让我走上正轨,那将是一个很大的帮助
注意:更改数字上下浮动的精度并不是一个真正的选项,因为它们是通过一种方法动态创建的。只需使用一个-,##0.00#
将显示最小2d.p.,最大4d.p
decimal x = 12.50000m;
decimal y = 0.0125m;
string sx = x.ToString("#,##0.00##"); // "12.50"
string sy = y.ToString("#,##0.00##"); // "0.125"
如果需要逗号-小数分隔符,请使用适当的CultureInfo
或创建具有正确属性的NumberFormatInfo
:
var nfi = new NumberFormatInfo
{
NumberDecimalSeparator = ",",
NumberGroupSeparator = ".",
};
string s = 1234.56m.ToString("#,##0.00##", nfi); // "1.234,56"
只需使用-,####0.00###
将显示最小2个d.p.,最大4个d.p
decimal x = 12.50000m;
decimal y = 0.0125m;
string sx = x.ToString("#,##0.00##"); // "12.50"
string sy = y.ToString("#,##0.00##"); // "0.125"
如果需要逗号-小数分隔符,请使用适当的CultureInfo
或创建具有正确属性的NumberFormatInfo
:
var nfi = new NumberFormatInfo
{
NumberDecimalSeparator = ",",
NumberGroupSeparator = ".",
};
string s = 1234.56m.ToString("#,##0.00##", nfi); // "1.234,56"
你能举几个例子说明你希望它表现如何吗?不清楚您想要什么结果当十进制数为
125000
时,我希望它显示12,50
。当它是0125
或01250
时,我需要它显示0125
你能举一些例子说明你希望它的行为吗?不清楚您想要什么结果当十进制数为125000
时,我希望它显示12,50
。当它是0125
或01250
时,我需要它显示0125
哇,我真的需要了解自定义格式字符串。非常感谢!哇,我真的需要学习自定义格式字符串。非常感谢!