Need help with accepting decimals as input in C#

2019-02-25 05:01发布

I have written a program in C# that runs the Pythagorean Theorem. I would love some help on allowing the program to accept decimal points from the user input. This is what I have.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Project_2
{
class Program
{
    static void Main(string[] args)
    {
        int sideA = 0;
        int sideB = 0;
        double sideC = 0;
        Console.Write("Enter a integer for Side A ");
        sideA = Convert.ToInt16(Console.ReadLine());
        Console.Write("Enter a integer for Side B ");
        sideB = Convert.ToInt16(Console.ReadLine());
        sideC = Math.Pow((sideA * sideA + sideB * sideB), .5);
        Console.Write("Side C has this length...");
        Console.WriteLine(sideC);
        Console.ReadLine();

    }
}
} 

I have been trying to research this by using the Math.Abs and so on only to receive build errors. Help in the write path would be greatly appreciated.

3条回答
The star\"
2楼-- · 2019-02-25 05:29
static decimal RequestDecimal(string message)
{
    decimal result;
    do 
    {
         Console.WriteLine(message);
    }
    while (!decimal.TryParse(Console.ReadLine(), out result));
    return result;
}
查看更多
Root(大扎)
3楼-- · 2019-02-25 05:31

I would recommend using Decimal.TryParse. This pattern is very safe since it traps the exceptions and returns a boolean to determine the success of the parse operation.

http://msdn.microsoft.com/en-us/library/system.decimal.tryparse.aspx

查看更多
\"骚年 ilove
4楼-- · 2019-02-25 05:37

Math.Pow doesnt take in decimal. There is already another question on SO about Math.Pow and decimal. Use double.

static void Main(string[] args)
        {
            double sideA = 0;
            double sideB = 0; 
            double sideC = 0; 
            Console.Write("Enter an integer for Side A ");
            sideA = Convert.ToDouble(Console.ReadLine()); 
            Console.Write("Enter an integer for Side B ");
            sideB = Convert.ToDouble(Console.ReadLine()); 
            sideC = Math.Pow((sideA * sideA + sideB * sideB), .5); 
            Console.Write("Side C has this length..."); 
            Console.WriteLine(sideC); 
            Console.ReadLine();
        }
查看更多
登录 后发表回答