c#中出现意外的double值

时间:2013-10-26 11:34:17

标签: c# .net double

今天我遇到了一个问题而无法弄清楚这个简单陈述的问题是什么

我试过

double d =1/4;

预计对我而言是0.25,但实际上ans是0.0为什么呢?

如果语句是像这样的整数变量

,我们该怎么办?
double a =(a-b)/(d+e); 

4 个答案:

答案 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; abd是整数,您应该使用其中之一;

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;