基础数学C#不工作

时间:2014-04-02 18:32:01

标签: c# math

为什么这些都不能用于C#??

// Expected: 0.5, Output: 0

Console.WriteLine("Result #1: " + (50 / 100));

int iFifty = 50;
int iOneHundred = 100;
Console.WriteLine("Result #2: " + (iFifty / iOneHundred));

6 个答案:

答案 0 :(得分:5)

它是一个整数除法,你需要双打:

Console.WriteLine("Result #1: " + (50 / 100d));

或者:

Console.WriteLine("Result #1: " + (50 / 100.0));

如果两个操作数均为integer,则整数除法正在执行,因此您得到integer结果。如果您使用'd'字面值,则明确说明该数字应被视为double,其他操作数会自动提升为double,然后执行双重分割,您会得到正确的结果。有关文字的更多信息,请参阅C# Specification Section 2.4.4 Literals想看看Floating-Point Types in C#

答案 1 :(得分:1)

您正在划分int而不是floatdouble。尝试:

50 / 100.0

答案 2 :(得分:1)

使用float或double数据类型,因为整数不计算点数值。

float iFifty = 50;
float iOneHundred = 100;
Console.WriteLine("Result #2: " + (iFifty / iOneHundred));

OR

double iFifty = 50;
double iOneHundred = 100;
Console.WriteLine("Result #2: " + (iFifty / iOneHundred));

答案 3 :(得分:0)

您需要将常量或变量指定为浮点数(double,float或decimal)

 Console.WriteLine("Result #1: " + (50.0 / 100.0));

选择要应用于代码的除法运算符,查看操作数 您有整数常量和变量,因此运算符应用整数除法

double iFifty = 50.0;
double iOneHundred = 100.0;
Console.WriteLine("Result #2: " + (iFifty / iOneHundred));

答案 4 :(得分:0)

你正在进行整数除法,结果是另一个整数。整数除法仅返回除法的整个部分。由于100在50中完全包含0次,因此返回0。

施放浮动或加倍以达到您的目标:

Console.WriteLine("Result #1: " + ((double)50 / (double)100));

答案 5 :(得分:0)

这不起作用意味着你想说这会给输出0.因为你使用integer values.so,

你需要强制浮点商。

Console.WriteLine("Floating point quotient:    "+ (50.0 / 100.0));