答案 0 :(得分:2)
答案 1 :(得分:1)
答案 2 :(得分:1)
string value;
Decimal number;
value = "16,523,421";
if (!Decimal.TryParse(value,out number))
{
// set it to something if the "Value" is not a number
number = -1;
}
答案 3 :(得分:1)
这样的东西?
string s = "372551.40";
decimal d;
if (decimal.TryParse(s, out d))
{
var culture = new CultureInfo("de-DE");
var result = d.ToString("0,0.00", culture);
// result is "372.551,40"
}
您也可以使用当前的文化,而不是像我一样使用硬编码。
希望这有帮助,
约翰
答案 4 :(得分:0)
您可以使用.Replace
string string 1 = "372,551.40";
string1.Replace(",","");
decimalVal = System.Convert.ToDecimal(StringVal);
//shows 372551.40
如果你正在玩大量的数字,你总是可以把它扔进for循环。
您可以在MSDN
上找到更多深度信息和一些示例答案 5 :(得分:0)
答案 6 :(得分:0)
您提到的显示取决于文化设置。
创建新的CultureInfo并在NumberFormat中,您必须将一些设置(如“{1}}”和“千位分隔符”修改为,
,并将其设置为.
的{{1}}方法。保持小数值的变量。
这应该将值显示为ToString
答案 7 :(得分:0)
带有IFormatProvider的decimal.Parse的重载将允许您解析包含带句点作为小数点符号的数字的字符串(如果标准是您文化中的逗号)。
您可以在结果小数上使用ToString,通过传入适当的IFormatProvider,使用逗号对其进行格式化。 CulturInfo和NumberFormatInfo都实现了IFormatProvider。
您可以使用以下代码获取CultureInfo的实例(此代码适用于澳大利亚的英语)。
new CultureInfo("en-AU")
另请注意,decimal.TryParse是decimal.Parse方法的一个很好的替代方法,如果您期望格式错误的字符串,因为它允许您处理它们而不会引发异常。
以下代码应该为您提供所需的结果(您在其中一条评论中写道,目标系统是SAP,文化可能是德语(de-DE))。
var yourString = "372551.40";
var yourDecimal = decimal.Parse(yourString, CultureInfo.InvariantCulture);
var yourFormattedDecimal = yourDecimal.ToString(new CultureInfo("de-DE"));
答案 8 :(得分:-1)
答案 9 :(得分:-1)
您可以创建自定义NumberFormatInfo
:
string s = "372551.40";
var dec = decimal.Parse(s, CultureInfo.InvariantCulture);
var nfi = new CultureInfo("en-US", false).NumberFormat;
nfi.NumberGroupSeparator = ".";
nfi.NumberDecimalSeparator = ",";
var res = dec.ToString("n", nfi);
var resDecimal = decimal.Parse(res, nfi);
输出正是您所需要的:372.551,40