我需要将字符串转换为十进制。
我很困惑为什么它不起作用
public ActionResult Test(){
decimal result;
bool o = decimal.TryParse("-2,366.15", out result);//false
//decimal c = decimal.Parse("2,366.15", NumberStyles.AllowThousands,new CultureInfo("en-US"));
var info = new CultureInfo("en-US");
bool r = decimal.TryParse("2,366.15", 0, CultureInfo.CurrentCulture, out result);//false
bool t = decimal.TryParse("2,366.15", 0, info, out result);//false
bool e = decimal.TryParse("2,366", 0, info, out result);//false
bool f = decimal.TryParse("-2366.15", 0, info, out result);//false
bool h = decimal.TryParse("2366", 0, info, out result);//true
bool h2 = decimal.TryParse("2366,15", 0, info, out result);//false
bool h3 = decimal.TryParse("2366.15", 0, info, out result);//false
bool g = decimal.TryParse("2,366.15", 0, CultureInfo.GetCultureInfo("en-US"), out result);//false
bool b = decimal.TryParse("2.366,15", out result);//true
}
b和h给出真实;
我正在开发欧洲版的IIS,所以b读取没有问题。
但是我试图转换“2,366.15”,这是美国使用小数和逗号表示数字。为什么在上面的所有排列中添加文化信息都不起作用?
的Tx
答案 0 :(得分:0)
我使用Convert将字符串转换为十进制或其他数字值,所以为了支持国际格式,这就是我使用的,
Convert.ToInt32("56789" , CultureInfo.InvariantCulture);
Convert.ToDouble("222,034", CultureInfo.InvariantCulture);
尝试
decimal.TryParse("2,3655.15", CultureInfo.InvariantCulture);
答案 1 :(得分:0)
想出来。它不接受0作为数字类型的输入
bool f = decimal.TryParse(“ - 2366.15”, NumberStyles.Number ,info,out result); // false