c#中出现意外的double值

Hot*_*tud 0 .net c# double

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

我试过了

double d =1/4;
Run Code Online (Sandbox Code Playgroud)

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

如果语句是像这样的整数变量,我们应该怎么做

double a =(a-b)/(d+e); 
Run Code Online (Sandbox Code Playgroud)

Son*_*nül 6

因为你所做的就是整数除法.无论你使用哪种类型,1 / 4总能给你0一个结果.

.NET有3种类型的划分.从7.7.2 Division operator

  • 整数除法
  • 浮点除法
  • 十进制除法

来自整数分部 ;

除法将结果舍入为零,结果的绝对值是小于两个操作数的商的绝对值的最大可能整数.

如果您希望0.25作为结果,则应将其中一个值定义为浮点.

你可以使用其中一个;

double d = 1d / 4d;
double d = 1d / 4;
double d = 1 / 4d;
Run Code Online (Sandbox Code Playgroud)

如果语句是像这样的整数变量,我们应该怎么做

double a =(ab)/(d + e);

我想你的a,b,de是整数,你应该使用这些再一个;

double a = (double)(a-b) / (double)(d+e);
double a = (a-b) / (double)(d+e);
double a = (double)(a-b) / (d+e);
Run Code Online (Sandbox Code Playgroud)