Math.Round 表示十进制数

Math.Round for a decimal number

代码:

double PagesCount = 9 / 6 ;
Console.WriteLine(Math.Round(PagesCount, 0));

我试图将 9/6(1,5) 的答案四舍五入为 2,但此代码片段的结果始终为 1。 我怎样才能避免这种情况?

9 / 6 是一个 integer division,其中 returns 是一个整数,然后在您的代码中转换为双精度数。

要获得双除法行为,请尝试

double PagesCount = 9d / 6 ;
Console.WriteLine(Math.Round(PagesCount, 0));

(顺便说一句,我很挑剔,但 .net 世界中的 decimal 指的是 10 进制数,与代码中的 2 进制数不同)

Math.Round 不是这里的问题。

9.0 / 6.0 ==> 1.59 / 6 ==> 1 因为在第二种情况下执行整数除法。

在混合情况9.0 / 69 / 6.0中,int转换为double并执行double除法。如果数字作为 int 变量给出,这意味着足以将其中之一转换为 double:

(double)i / j ==> 1.5

请注意,整数除法由模运算符 % 补充,它产生该除法的余数:

9 / 6 ==> 1
9 % 6 ==> 3

因为6 * 1 + 3 ==> 9