【发布时间】:2013-11-05 12:53:38
【问题描述】:
今天我遇到了一个问题,无法弄清楚这个简单的陈述有什么问题
我试过了
double d =1/4;
我的预期答案是0.25,但实际上答案是0.0 为什么会这样??
如果语句是这样的整数变量,我们该怎么办
double a =(a-b)/(d+e);
【问题讨论】:
今天我遇到了一个问题,无法弄清楚这个简单的陈述有什么问题
我试过了
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 =(a-b)/(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 将为零。
【讨论】:
使用这个:
double d = (double) 1 / 4;
【讨论】:
/ 运算符 (msdn)
当你将两个整数相除时,结果总是一个整数。为了 例如,7 / 3 的结果是 2。要确定 7 / 的余数 3、使用余数运算符(%)。获得商作为有理数 数字或分数,给出除数或除数类型 float 或类型 双。如果您表示除数,则可以隐式分配类型 或除数作为小数通过将数字放在右侧 小数点。
试试这个:
double d = 1.0 / 4.0;
【讨论】: