我有这个程序,在每个可能的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();
}
}
}
答案 0 :(得分:17)
您将整数除以整数 - 即使您将结果分配给float
,也始终使用整数运算。最简单的修复方法是使其中一个操作数浮动,例如
float percent = (Score1 + Score2 + Score3) / 600f;
请注意,这不会实际给你一个百分比 - 它会给你一个0到1之间的数字(假设输入在0到200之间)。
要获得实际百分比,您需要乘以100 - 相当于仅除以6:
float percent = (Score1 + Score2 + Score3) / 6f;
答案 1 :(得分:3)
您没有计算百分比。想象一下,用户输入最高分:200 + 200 + 200 = 600,除以600 = 1.如果任何一个分数输入低于200,则总数将小于1并向下舍入为0。 您应该将它们存储为浮点数(以确保您没有丢失任何舍入信息)并乘以100。
答案 2 :(得分:2)
我认为这是一个数据类型问题。您应该将其中一个分数转换为浮动,因为您的变量百分比是浮点数,并且所有分数都是int。
答案 3 :(得分: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();
}
}
}