将"2.45"转换为十进制

Pri*_*kar 1 .net c# decimal

我知道这是最愚蠢的问题.但实际上我很难将价格(字符串)转换为小数.这是我尝试过的

string s = "123.45";
decimal d = decimal.Parse(s, NumberStyles.AllowCurrencySymbol | NumberStyles.AllowThousands | NumberStyles.AllowDecimalPoint);
Run Code Online (Sandbox Code Playgroud)

但我得到格式异常

也试过了

decimal num;
bool pass = decimal.TryParse("2.85", out num);
Run Code Online (Sandbox Code Playgroud)

num表示为0.

任何帮助将不胜感激.

Dar*_*rov 8

尝试指定不变文化,其中.是小数分隔符:

string s = "123.45";
decimal d = decimal.Parse(
    s, 
    NumberStyles.AllowCurrencySymbol | NumberStyles.AllowThousands | NumberStyles.AllowDecimalPoint, 
    CultureInfo.InvariantCulture
);
Run Code Online (Sandbox Code Playgroud)

Parse方法使用当前线程文化来解析数字.因此,如果您使用的某些文化.不是小数点分隔符(fr-FR例如),那么它将无法正常工作,例如它所期望的数字123,45.