如何在输入字符串C#中允许货币符号

时间:2017-01-07 02:57:33

标签: c# readline

我需要创建一个控制台应用程序,如下图所示。Console Application

问题是,当我用$输入每小时费率时,会发生System.FormatException错误。它还说输入字符串的格式不正确。

以下是导致问题的代码片段

        double rate = 0;
        Console.Write("Enter the hourly rate: ");
        rate = double.Parse(Console.ReadLine());

这是整个计划

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

namespace ICA2_Mason_Clarke
{
    class Program
    {

        static void Main(string[] args)
        {
            int hoursWorked = 0;
            Console.Write("Enter the hours worked: ");
            hoursWorked = int.Parse(Console.ReadLine());
            double rate = 0;
            Console.Write("Enter the hourly rate: ");
            rate = double.Parse(Console.ReadLine());
            int taxRate = 0;
            Console.Write("Enter the tax rate as a percent: ");
            taxRate = int.Parse(Console.ReadLine());
            double grossPay = rate * hoursWorked;
            Console.Write("Gross pay : $");
            Console.WriteLine(grossPay);
            double taxesDue = grossPay * taxRate / 100;
            Console.Write("Taxes due : $");
            Console.WriteLine(taxesDue);
            double netPay = grossPay - taxesDue;
            Console.Write("Net pay : $");
            Console.WriteLine(netPay);
            Console.Write("Press any key to continue");
            Console.Read();





        }
    }
}

3 个答案:

答案 0 :(得分:3)

您可以使用 double.TryParse 重载来允许货币符号并获取数字。

double d;
double.TryParse("$20.00", NumberStyles.Number | NumberStyles.AllowCurrencySymbol, CultureInfo.CurrentCulture, out d);
Console.WriteLine(d);  

答案 1 :(得分:1)

您只需更改输入行:

Console.Write("Enter the hourly rate: $");

行:

double.Parse(...)

在解释货币

的上一个问题的链接中进行了解释

Convert any currency string to double

答案 2 :(得分:0)

您可以使用语法@"..."来表示C#中的字符串文字,或者您可以使用字符\来转义保留的格式字符。

例如:

Console.Write(@"Gross pay : $");