为什么加倍a = 8/3返回2?

mar*_*zzz 0 .net c# double

我有以下代码:

double a = 8/ 3;
Response.Write(a);
Run Code Online (Sandbox Code Playgroud)

它返回值2.为什么?我需要至少一个十进制数字.像2.6或2.66这样的东西.我怎样才能得到这样的结果?

SiB*_*SiB 9

尝试

double a = 8/3.0d;
Run Code Online (Sandbox Code Playgroud)

要么

double a = 8.0d/3;
Run Code Online (Sandbox Code Playgroud)

得到一个准确的答案.

因为在表达式中,a = 8/3两个操作数都是int如此,所以结果int与它存储在a中的事实无关double.结果总是在更高数据类型的操作数中

编辑

回答

8和3是从变量得到的.我可以进行某种演员表演吗?

如果值来自变量,您可以将其中一个操作数强制转换为double:

int b = 8;
int c = 3;
double a = ((double) b) /c;
Run Code Online (Sandbox Code Playgroud)