Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算错误_C#_Operators - Fatal编程技术网

C# 计算错误

C# 计算错误,c#,operators,C#,Operators,在C#编程中,我与操作员一起工作,但我陷入了以下错误,即小费和税款的价值与预期不符 我的控制台应用程序的代码: class OPerators { static void Main(string[] args) { Console.WriteLine("Enter the MealCost"); double mealCost = double.Parse(Console.ReadLine()); int tipPercent =

在C#编程中,我与操作员一起工作,但我陷入了以下错误,即小费和税款的价值与预期不符

我的控制台应用程序的代码:

class OPerators
{
    static void Main(string[] args)
    {
        Console.WriteLine("Enter the MealCost");

        double mealCost = double.Parse(Console.ReadLine());
        int tipPercent = int.Parse(Console.ReadLine());
        int taxPercent = int.Parse(Console.ReadLine());

        // calulation Part

        // here i am getting the value of tip is 0.
        double tip = mealCost * (tipPercent / 100); 

        // here also value of tax is 0.
        double tax = mealCost * (taxPercent / 100);  

        double totalCost = mealCost + tip + tax;

        Console.WriteLine(Math.Round(totalCost));
        Console.ReadLine();

    }
}
如何获取
tip
tax
的值

我试过:

double a = (tipPercent /100); 
tip = mealCost *a;

但它不工作。

使用以下命令将括号内计算的输出更改为浮点数:

double tip = mealCost * (tipPercent / 100.0);
double tax = mealCost * (taxPercent / 100.0); 

您将整数除以100,如果数字小于100,它将始终返回0。将tipPercent和taxPercent类型转换为double将解决您的问题

double tip = mealCost * ((double)tipPercent / 100);

希望这有帮助

需要注意的是,
十进制
应该用于货币值。
关于您的问题本身,您可以使用以下代码以获得预期结果:

        Console.WriteLine("Enter the MealCost");

        decimal mealCost = Decimal.Parse(Console.ReadLine());
        int tipPercent = Int32.Parse(Console.ReadLine());
        int taxPercent = Int32.Parse(Console.ReadLine());

        // calulation Part

        decimal tip = mealCost * ((decimal)tipPercent / 100m);
        decimal tax = mealCost * ((decimal)taxPercent / 100m); 

        decimal totalCost = mealCost + tip + tax;

        Console.WriteLine(Math.Round(totalCost));
        Console.ReadLine();

整数算术中可能重复的
20/100
0
。一致地切换到
double
。另外请注意,
decimal
更适合表示货币值。请解释您的程序是如何错误的。例如,与实际结果相比,预期结果是什么?您不需要按小数点进行转换和偏差。只要一个数字不是整数,它就会选择十进制除法。感谢它的工作原理,我把double放在100除法的孔表达式前面。