操作符& # 39;& # 39;不能应用于'float'类型的操作数和& # 39;字符串# 39;

本文关键字:操作数 字符串 应用于 不能 操作符 float 类型 | 更新日期: 2023-09-27 18:15:39

我正在创建一个小程序,它要求用户输入一些关于他们自己的信息,然后他们完成了多少小时的工作,然后计算他们的总收入,净收入和税后收入。我不是100%熟悉c#中的所有术语,但希望有人能指导我正确的方向,我也想知道是否有任何方法可以缩短代码,使其看起来更干净,更容易阅读,并有一种方法使其在数字后只有2个小数点。

这只是我收到错误的一小部分代码。这些都是浮点数

hrsworked:用户输入他们工作了多少小时
税费:预定值35.72%
私人:就是每小时31.31美元的工资率

  Console.WriteLine("'nGross Pay            " + (hrsworked * prate).ToString("c"));
  Console.WriteLine("Tax                    " + ((hrsworked * prate) * (tax / 100)).ToString("c"));
  Console.WriteLine("Net Pay                " + ((hrsworked * prate) - ((hrsworked * prate) * (tax / 100)).ToString("c")));

操作符& # 39;& # 39;不能应用于'float'类型的操作数和& # 39;字符串# 39;

您的代码中有一些错别字。花点时间仔细回顾一下你正在做的事情。

以这一行为例,它导致了标题中的错误:

((hrsworked * prate) - ((hrsworked * prate) * (tax / 100)).ToString("c")));

括号是这样分组的:

(
    (hrsworked * prate)
    -
    ((hrsworked * prate) * (tax / 100)).ToString("c")
)

你试图从一个数字中减去一个字符串。你需要调整括号:

... ((hrsworked * prate) - ((hrsworked * prate) * (tax / 100))).ToString("c"));

至于"更干净",我绝对会听从bloorgbeard的建议,把这些都拿出来。例如:

var grossPay = hrsworked * prate;
var taxPercentage = tax / 100;
... + grossPay.ToString("c"));
... + (grossPay * taxPercentage).ToString("c"));
... + (grossPay - (grossPay * taxPercentage)).ToString("c")));

(由于操作顺序,您不需要在上面最后一行最里面的括号,但我认为它使它更易于阅读。YMMV)

        Console.WriteLine("Please enter hours.");
        var hoursWorked = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Please enter pay rate");
        var payRate = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Please enter tax.");
        var tax = Convert.ToDouble(Console.ReadLine());
        var grossPay=(hoursWorked * payRate);
        var taxAmount = (grossPay * (tax / 100));
        var netPay = grossPay - taxAmount;
        Console.WriteLine(string.Format("Gross Pay {0}",grossPay.ToString("c")));
        Console.WriteLine(string.Format("Tax {0}", taxAmount.ToString("c")));
        Console.WriteLine(string.Format("Net Pay {0}", netPay.ToString("c")));

错误在这部分代码中:

(hrsworked * prate) - ((hrsworked * prate) * (tax / 100)).ToString("c"))

您尝试从(hrsworked * prate)中减去字符串((hrsworked * prate) * (tax / 100)).ToString("c")

你可以试着在http://www.dotnetperls.com/上阅读有关c#的内容。我觉得这些例子很容易理解。