C#从键盘读取十进制数

时间:2013-11-17 09:36:03

标签: c#

嗨,我刚开始学习C#,我写了一个简单的程序,它应该读取键盘输入的值。我用来做的代码是:

    try {
    x=double.Parse(Console.ReadLine(),CultureInfo.InvariantCulture.NumberFormat);
        }
    catch (System.FormatException)
    {//error message }        

问题在于,如果我输入1,2,则存储在x中的值为12。 有没有什么办法可以把这个值读成1.2,所以将逗号转换成一个点?

此外,如果我输入1,则3该值将为13并且不会生成错误。

2 个答案:

答案 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);