这在 .NET 6 中正常吗

Reg*_*tea 0 .net c# .net-core

我感觉这是一个错误,是吗?

decimal s = 30 / 9;
double w = 20 / 9;
Console.WriteLine(s);
Console.WriteLine(w);
Run Code Online (Sandbox Code Playgroud)

结果是

在此输入图像描述

Eni*_*ity 5

这是正常的吗,是的。这是一个错误吗,不。

您正在对30 / 9is进行整数数学运算3,然后分配给 a decimal,然后进行转换。与第二行相同。

试试这个:

decimal s = 30m / 9m;
double w = 20.0 / 9.0;
Console.WriteLine(s);
Console.WriteLine(w);
Run Code Online (Sandbox Code Playgroud)

这给出:

3.3333333333333333333333333333
2.2222222222222223
Run Code Online (Sandbox Code Playgroud)

您需要在表达式中使用正确的类型声明常量。后缀 anmdecimal. 并提供小数位或带有dfor 的后缀double