在C#中将字符串转换为十进制无效



我需要将字符串转换为十进制。

我很困惑为什么不起作用

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的读取没有问题。

然而,我正在尝试转换"2366.15",这是美国使用十进制和逗号表示数字。为什么在上面的所有排列中添加文化信息都不起作用?

Tx

我使用Convert将字符串转换为十进制或其他数值,因此为了支持国际格式,我使用

  Convert.ToInt32("56789"   , CultureInfo.InvariantCulture);
  Convert.ToDouble("222,034", CultureInfo.InvariantCulture);

尝试

decimal.TryParse("2,3655.15", CultureInfo.InvariantCulture);

想明白了。它不接受0作为数字样式的输入

bool f=十进制。TryParse("-2366.15",NumberStyles.Number,info,out result)//错误

相关内容

  • 没有找到相关文章

最新更新