今天我遇到了一个问题,无法弄清楚这个简单的陈述有什么问题
我试过了
double d =1/4;
对我来说是预期的,0.25
但实际上是0.0
为什么会这样?
如果语句是这样的整数变量,我们应该怎么做
double a =(a-b)/(d+e);
因为您在这里所做的是整数除法。1 / 4
总是给你0
一个结果,不管你是什么类型的。
.NET 有 3 种类型的划分。从7.7.2 Division operator
从整数除法部分;
除法将结果向零舍入,结果的绝对值是小于两个操作数的商的绝对值的最大可能整数。
如果你想要0.25
结果,你应该将你的值之一定义为浮点数。
您可以使用其中之一;
double d = 1d / 4d;
double d = 1d / 4;
double d = 1 / 4d;
如果语句是这样的整数变量,我们应该怎么做
双a =(ab)/(d + e);
我假设您的a
,b
和d
是e
整数,那么您应该使用其中之一;
double a = (double)(a-b) / (double)(d+e);
double a = (a-b) / (double)(d+e);
double a = (double)(a-b) / (d+e);
double d =1d/4;
应该管用。如果您未指定数字的类型,则将其视为整数。整数 1/4 将为零。
/ 运营商 ( msdn )
当你将两个整数相除时,结果总是一个整数。例如,7 / 3 的结果是 2。要确定 7 / 3 的余数,请使用余数运算符 (%)。要获得作为有理数或分数的商,请给出除数或除数类型float或类型 double。如果通过将数字放在小数点右侧将被除数或除数表示为小数,则可以隐式分配类型。
尝试这个:
double d = 1.0 / 4.0;
用这个:
double d = (double) 1 / 4;