将“2.45”转换为十进制

时间:2011-07-07 06:20:58

标签: c# .net decimal

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

string s = "123.45";
decimal d = decimal.Parse(s, NumberStyles.AllowCurrencySymbol | NumberStyles.AllowThousands | NumberStyles.AllowDecimalPoint);

但我得到格式异常

也试过

decimal num;
bool pass = decimal.TryParse("2.85", out num);

num出现为0。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:8)

尝试指定.为小数点分隔符的不变文化:

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

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