为什么这些都不能用于C#??
// Expected: 0.5, Output: 0
Console.WriteLine("Result #1: " + (50 / 100));
int iFifty = 50;
int iOneHundred = 100;
Console.WriteLine("Result #2: " + (iFifty / iOneHundred));
答案 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
而不是float
或double
。尝试:
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));