为什么0.43转换为43?

Max*_*Max 0 c# decimal visual-studio

为什么Cbm充满了43而不是0.43

string strCbm;
decimal Cbm;

strCbm = unConvertedCbm.CustomValue.Replace(".", ",");
Cbm = (Quantity * Decimal.Parse(strCbm));
Run Code Online (Sandbox Code Playgroud)

供您参考:

unConvertedCbm.CustomValue =填充0.43

Quantity =填充1

我将在下面描述这段代码:

  1. 我创建一个字符串和一个小数.
  2. 我替换所有'.' 在CustomValue中带有','.
  3. CustomValue插入到strCbm中,0.43转换为0.43.
  4. Cbm填充数量(1)乘以0.43(转换为小数)

在我看来,Cbm应该是0.43而不是43.

为什么Cbm充满了43而不是0.43?

xan*_*tos 6

因为您的文化的小数分隔符是,,而不是.可能.尝试这样做(0.5).ToString(),看看你有你的结果0.50,5.

事实是你不应该使用Replace,你应该这样做:

var culture = new CultureInfo("someculturegoeshere");
Run Code Online (Sandbox Code Playgroud)

然后

Decimal Cbm = Decimal.Parse(strCbm, culture); 
Run Code Online (Sandbox Code Playgroud)