今天我遇到了一个问题而无法弄清楚这个简单陈述的问题是什么
我试过
double d =1/4;
预计对我而言是0.25
,但实际上ans是0.0
为什么呢?
如果语句是像这样的整数变量
,我们该怎么办?double a =(a-b)/(d+e);
答案 0 :(得分:6)
因为你所做的是整数除法。 <{1}}总是会给你1 / 4
,无论你支持哪种类型。
.NET有3种类型的划分。来自7.7.2 Division operator
来自整数分部部分;
该除法将结果舍入为零,且绝对值为 结果是最大可能的整数小于 两个操作数的商的绝对值。
如果您希望0
作为结果,则应将其中一个值定义为浮点。
您可以使用其中之一;
0.25
如果语句是整数变量,我们该怎么办? 像这样
加倍a =(a-b)/(d + e);
我认为您的double d = 1d / 4d;
double d = 1d / 4;
double d = 1 / 4d;
,a
,b
和d
是整数,您应该使用其中之一;
e
答案 1 :(得分:2)
double d =1d/4;
应该有效。 如果未指定数字类型,则将其视为“整数”。整数1/4将为零。
答案 2 :(得分:1)
/运营商(msdn)
分割两个整数时,结果始终为整数。对于 例如,7/3的结果是2.确定剩下的7 / 3,使用余数运算符(%)。获得商作为理性 数字或分数,给予被分红或除数类型浮动或输入 的双即可。如果表达被除数,您可以隐式指定类型 通过在数字的右侧放置一个数字或将除数作为小数 小数点。
试试这个:
double d = 1.0 / 4.0;
答案 3 :(得分:1)
使用此:
double d = (double) 1 / 4;