嗨,我刚开始学习C#,我写了一个简单的程序,它应该读取键盘输入的值。我用来做的代码是:
try {
x=double.Parse(Console.ReadLine(),CultureInfo.InvariantCulture.NumberFormat);
}
catch (System.FormatException)
{//error message }
问题在于,如果我输入1,2,则存储在x中的值为12。 有没有什么办法可以把这个值读成1.2,所以将逗号转换成一个点?
此外,如果我输入1,则3该值将为13并且不会生成错误。
答案 0 :(得分:1)
您应该使用double.TryParse代替并传递相应的文化信息。
double x;
CultureInfo ci = new CultureInfo("it-IT");
if(double.TryParse(Console.ReadLine(),NumberStyles.AllowDecimalPoint, ci, out x))
MessageBox.Show("It is a double number");
else
MessageBox.Show("Not a double");
您也可以尝试使用不需要CultureInfo和NumberStyles参数的简单版本,但是,在这种情况下,您可以根据当前的机器文化获得转换,这可能是否合适取决于您的意图。
if(double.TryParse(Console.ReadLine(),out x))
.....
使用Culture.InvariantCulture表示使用与英语关联的默认操作系统文化执行解析,但不与任何国家/地区关联。
TryParse
的一个重要好处是,您可以避免代码处理简单Parse方法引发的可能异常。当您有其他选择时,应始终避免例外情况作为控制程序流程的方法。 (表现命中)。
答案 1 :(得分:0)
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ",";
Double.Parse(num,nfi);