5

我有这个程序从可能的 200 分中取 3 分,然后应该得到平均值并显示百分比。但是当我输入数字时,我得到 00.0 作为答案。我可能做错了什么?

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int Score1;
            int Score2;
            int Score3;

            Console.Write("Enter your score (out of 200 possible) on the first test: ");

            Score1 = int.Parse(Console.ReadLine());
            Console.Write("Enter your score (out of 200 possible) on the second test: ");

            Score2 = int.Parse(Console.ReadLine());
            Console.Write("Enter your score (out of 200 possible on the third test: ");

            Score3 = int.Parse(Console.ReadLine());
            Console.WriteLine("\n");

            float percent = (( Score1+ Score2+ Score3) / 600);

            Console.WriteLine("Your percentage to date is: {0:00.0}", percent);
            Console.ReadLine();
        }
    }
}
4

4 回答 4

17

您将整数除以整数 - 即使您将结果分配给float. 解决这个问题的最简单方法是将其中一个操作数设为浮点数,例如

float percent = (Score1 + Score2 + Score3) / 600f;

请注意,这实际上不会给您一个百分比 - 它会给您一个介于 0 和 1 之间的数字(假设输入介于 0 和 200 之间)。

要获得实际百分比,您需要乘以 100 - 仅相当于除以 6:

float percent = (Score1 + Score2 + Score3) / 6f;
于 2010-09-13T08:25:23.513 回答
3

你不是在计算百分比。假设用户输入最高分:200 + 200 + 200 = 600,除以 600 = 1。如果输入的任何一个分数低于 200,总分将小于 1 并向下舍入为 0。你应该将它们存储为浮点数(以确保不会丢失四舍五入的信息)并乘以 100。

于 2010-09-13T08:31:20.417 回答
2

我认为这是一个数据类型问题。您应该将其中一个分数转换为浮点数,因为您的变量百分比是浮点数,并且所有分数都是整数。

于 2010-09-13T08:37:20.973 回答
0
using System;

namespace stackOverflow
{
    class Program
    {
        static void Main(string[] args)
        {
            int Score1;
            int Score2;
            int Score3;

            Console.Write("Enter your score (out of 200 possible) on the first test: ");
            Score1 = int.Parse(Console.ReadLine());
            Console.Write("Enter your score (out of 200 possible) on the second test: ");
            Score2 = int.Parse(Console.ReadLine());
            Console.Write("Enter your score (out of 200 possible on the third test: ");
            Score3 = int.Parse(Console.ReadLine());
            Console.WriteLine("\n");
            var percent = ((Score1 + Score2 + Score3) / 6D);
            Console.WriteLine("Your percentage to date is: {0:00.0}", percent);
            Console.ReadLine();

        }
    } 

}
于 2010-09-13T09:52:57.533 回答