为什么Cbm填充43而不是0,43
string strCbm;
decimal Cbm;
strCbm = unConvertedCbm.CustomValue.Replace(".", ",");
Cbm = (Quantity * Decimal.Parse(strCbm));
供您参考:
unConvertedCbm.CustomValue
=填充0.43
Quantity
=填充1
我将在下面介绍此代码:
在我看来,Cbm应该是0.43而不是43。
为什么Cbm填充43而不是0,43?
答案 0 :(得分:6)
因为您的文化的小数点分隔符可能是,
而不是.
。尝试执行(0.5).ToString()
,看看您的结果是0.5
还是0,5
。
事实是你不应该使用Replace
,你应该这样做:
var culture = new CultureInfo("someculturegoeshere");
然后
Decimal Cbm = Decimal.Parse(strCbm, culture);
答案 1 :(得分:1)
这是因为你的文化认可''。符号作为小数点,而不是','符号。您可以使用CultureInfo类将小数转换为所需的文化。
例如,如果您想使用法语格式,您可以执行以下操作:
Decimal.Parse(strCbm, new CultureInfo("fr-FR"));
等等。
答案 2 :(得分:0)
您可以阅读有关它的详细信息here。你可以这样做
string value;
NumberStyles style;
CultureInfo culture;
decimal number;
value = "0,43";
style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
culture = CultureInfo.CreateSpecificCulture("fr-FR");
if (Decimal.TryParse(value, style, culture, out number))
Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
Console.WriteLine("Unable to convert '{0}'.", value);