我理解.NET是否使用银行家的四舍五入为2.5到2.但是,这可能是这样的:
decimal point;
point =51 * 70 / 100;
Math.Round(point,0, MidPointRounding.AwayFromZero);
Run Code Online (Sandbox Code Playgroud)
轮到35?
即使它是奇数,我怎样才能将所有.5的圆整数转换为整数?
Dir*_*mar 10
您的代码段中的第二行已经为您提供了整数结果.
51,70,100是类型int,因此选择整数乘法和除法运算符.整数乘法或除法的结果总是再次为整数类型,并且在使用/整数分割时可能会截断可能的小数位.
该陈述point = 51 * 70 / 100;相当于
int tmp = 51 * 70; // result is 3570
tmp = tmp / 100; // result is 35 (!!!)
point = (decimal)tmp; // point is 35m;
Run Code Online (Sandbox Code Playgroud)
解决方案是更改您的代码,以便它使用decimal算术:
point = 51m * 70m / 100m; // point is 35.7m
Run Code Online (Sandbox Code Playgroud)
实际上,其中一个操作数是类型就足够了decimal.这可以通过使用后缀m(货币)或使用类型转换来实现.以下示例还将给出所需的结果:
point = (decimal)51 * 70 / 100;
Run Code Online (Sandbox Code Playgroud)