我理解.NET是否使用银行家的四舍五入为2.5到2。但是,这可能是怎样的:
decimal point;
point =51 * 70 / 100;
Math.Round(point,0, MidPointRounding.AwayFromZero);
轮到35?
即使它是奇数,我怎样才能将所有.5的圆整数转换为整数?
答案 0 :(得分: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;
解决方案是更改代码,使其使用decimal
算术:
point = 51m * 70m / 100m; // point is 35.7m
实际上,一个操作数的类型decimal
就足够了。这可以通过使用后缀m
(对于货币)或使用类型转换来实现。以下示例也将给出所需的结果:
point = (decimal)51 * 70 / 100;
答案 1 :(得分:9)
你正在进行整数除法。试试这个:
decimal point = 51m * 70m / 100m;