我试图计算一个扇区的面积但是当我将angleParse
除以360并乘以radiusParse
时,我有时会得到0的输出。
会发生什么以及我需要在哪里修复它? (对不起,如果这是一个奇怪的问题,但我昨天开始学习C#,我今天才开始使用StackOverflow)
Frostbyte
static void AoaSc()
{
Console.WriteLine("Enter the radius of the circle in centimetres.");
string radius = Console.ReadLine();
int radiusParse;
Int32.TryParse(radius, out radiusParse);
Console.WriteLine("Enter the angle of the sector.");
string sectorAngle = Console.ReadLine();
int angleParse;
Int32.TryParse(sectorAngle, out angleParse);
double area = radiusParse * angleParse / 360;
Console.WriteLine("The area of the sector is: " + area + "cm²");
Console.ReadLine();
}
答案 0 :(得分:3)
你遇到了整数除法。如果a
和b
为int
,则a / b
也是int
,其中非整数部分已被截断(即小数点后的所有内容)已经被切断了。)
如果您想要“真实”结果,则除法中的一个或多个操作数需要是浮点数。以下任何一种都可以使用:
radiusParse * (double)angleParse / 360;
radiusParse * angleParse / 360.0;
请注意,将radiusParse
转换为double
是不够的,因为/
运算符的优先级高于*
(因此整数除法首先发生)。
最后,还要注意.NET中的decimal
是它自己的类型,与float
和double
不同。
答案 1 :(得分:2)
我认为如果你把它除以360.0它会起作用。
或者声明一个十进制类型的变量,并将其设置为360。
private decimal degreesInCirle = 360;
// Other code removed...
double area = radiusParse * angleParse / degreesInCirle;