将字符串转换为十进制但使用瑞典货币
Convert string to decimal but have swedish currency
我的代码:
public decimal SetHourRate(string hourrate)
{
var value = decimal.Parse(hourrate, NumberStyles.Currency, CultureInfo.CurrentCulture.NumberFormat);
return value;
}
在参数中:
string hourrate = "800.00"
我的问题:
现在我的输出就像 var value = 80000
?我希望它像我输入的字符串一样。我来自瑞典,我们用点而不是逗号来分隔货币中的小数点。即使字符串看起来像这样 string hourrate = "1050.67"
,它也必须有效。
如果输出像 var value = "800,00"
或 var value ="1050,67"
(逗号而不是点。)
也没关系
您必须使用 CultureInfo 来指定解析时要使用的格式。
CultureInfo culture = new CultureInfo("sv-SE");
culture.NumberFormat.NumberDecimalSeparator = ".";
decimal value;
if (decimal.TryParse(hourrate, NumberStyles.Currency, culture, out value))
{
// Do what you want with value if successfully parsed
}
else
{
// Failed to parse
}
确保在代码顶部包含 System.Globalization
。
它返回 80000
因为瑞典语中的 .
是 GroupSeparator。 ,
是小数点分隔符。
您传递的字符串类似于 800.00
,因此 .
将用作组分隔符。这就是您获得此值的原因。
您可以强制小数点分隔符 .
更改格式化程序 (CultureInfo),例如:
public decimal SetHourRate(string hourrate)
{
var swedishCulture = new CultureInfo("sv-SE");
swedishCulture.NumberFormat.NumberDecimalSeparator = ".";
var value = decimal.Parse(hourrate, NumberStyles.Currency, swedishCulture);
return value;
}
我的代码:
public decimal SetHourRate(string hourrate)
{
var value = decimal.Parse(hourrate, NumberStyles.Currency, CultureInfo.CurrentCulture.NumberFormat);
return value;
}
在参数中:
string hourrate = "800.00"
我的问题:
现在我的输出就像 var value = 80000
?我希望它像我输入的字符串一样。我来自瑞典,我们用点而不是逗号来分隔货币中的小数点。即使字符串看起来像这样 string hourrate = "1050.67"
,它也必须有效。
如果输出像 var value = "800,00"
或 var value ="1050,67"
(逗号而不是点。)
您必须使用 CultureInfo 来指定解析时要使用的格式。
CultureInfo culture = new CultureInfo("sv-SE");
culture.NumberFormat.NumberDecimalSeparator = ".";
decimal value;
if (decimal.TryParse(hourrate, NumberStyles.Currency, culture, out value))
{
// Do what you want with value if successfully parsed
}
else
{
// Failed to parse
}
确保在代码顶部包含 System.Globalization
。
它返回 80000
因为瑞典语中的 .
是 GroupSeparator。 ,
是小数点分隔符。
您传递的字符串类似于 800.00
,因此 .
将用作组分隔符。这就是您获得此值的原因。
您可以强制小数点分隔符 .
更改格式化程序 (CultureInfo),例如:
public decimal SetHourRate(string hourrate)
{
var swedishCulture = new CultureInfo("sv-SE");
swedishCulture.NumberFormat.NumberDecimalSeparator = ".";
var value = decimal.Parse(hourrate, NumberStyles.Currency, swedishCulture);
return value;
}