如何划分int以接收小数?

时间:2015-06-23 15:04:17

标签: c# math

我试图计算一个扇区的面积但是当我将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();
}

2 个答案:

答案 0 :(得分:3)

你遇到了整数除法。如果abint,则a / b也是int,其中非整数部分已被截断(即小数点后的所有内容)已经被切断了。)

如果您想要“真实”结果,则除法中的一个或多个操作数需要是浮点数。以下任何一种都可以使用:

radiusParse * (double)angleParse / 360;
radiusParse * angleParse / 360.0;

请注意,将radiusParse转换为double是不够的,因为/运算符的优先级高于*(因此整数除法首先发生)。

最后,还要注意.NET中的decimal是它自己的类型,与floatdouble不同。

答案 1 :(得分:2)

我认为如果你把它除以360.0它会起作用。

或者声明一个十进制类型的变量,并将其设置为360。

private decimal degreesInCirle = 360;

// Other code removed...

double area = radiusParse * angleParse / degreesInCirle;