c# 将字符串值转换为十进制的正确方法



我需要将格式"101.46">的任何值转换为十进制

string s = "101.46";
decimal value = Convert.ToDecimal(s);

但十进制最终值始终为 10146。我需要输出值的格式为 101.46 作为十进制

Convert.ToDecimal将使用当前正在执行的线程的区域性 - 我的猜测是,在您的情况下,这是一种使用 , 作为小数分隔符而不是 . 的区域性。只需指定正确的区域性(通常是固定区域性(,这几乎总是用于任何旨在供机器读取的字符串的正确区域性。(也应使用固定区域性来创建此类字符串。

我通常建议使用静态Parse方法而不是Convert.ToXyz(因为它们通常功能更强大,并且也有TryParse选项(,因此,虽然您可以将固定区域性传递给Convert.ToDecimal,但我会使用

decimal value = decimal.Parse(text, CultureInfo.InvariantCulture);

您当前的区域性似乎使用 , 作为小数分隔符,那么您可以使用:

decimal value = decimal.Parse(s, CultureInfo.InvariantCulture);
public static boolean isNumeric(String str)  
{  
  try  
  {  
    decimal d = decimal.parseDouble(str);  
  }  
  catch(NumberFormatException nfe)  
  {  
    return false;  
  }  
  return true;  
}

如果要使用正则表达式,可以使用如下方法,

public static boolean isNumeric(String str)
{
  return str.matches("-?\d+(\.\d+)?");  //match a number with optional '-' and decimal.
}

如果函数返回 true,则

if(isNumeric(Yourvalue)){
  decimal value = decimal.Parse(s, CultureInfo.InvariantCulture);
}

相关内容

  • 没有找到相关文章

最新更新