我正在对 2 个数字进行计算,如下所示:
No1 = 263
No2 = 260
Decimal places = 2
Expected output = 98.86
法典:
decimal output = 0;
int decimalPlaces = 2;
if (No1 > 0)
output = ((100 * Convert.ToDecimal(((No2 * 100) / No1))) / 100);
output = TruncateDecimal(output, decimalPlaces); // 98
public static decimal TruncateDecimal(decimal value, int precision)
{
decimal step = (decimal)Math.Pow(10, precision);
decimal tmp = Math.Truncate(step * value);
return tmp / step;
}
上面的代码呈现输出 = 98
当我在计算器中除以 263/260 时,我得到 0.988593
小数位 = 2 : 取小数后 2 位
数字十进制位 = 2 :四舍五入也将在小数点后 2 位后从这个位置取,即四舍五入应从 593 渲染 98.86
No1 = 117
No2 = 120
decimal places = 2
Expected Output = 97.50
有人能用这个取悦我吗?
问题是整数除法。 当你把一个整数除以一个整数时,你会得到一个整数。 您需要将值(至少其中一个(转换为小数
output = Math.Round((100 * ((decimal)No2/(decimal)No1)),2);
尝试更改一些括号位置,来自:
output = ((100 * Convert.ToDecimal(((No2 * 100) / No1))) / 100);
自
output = ((100 * ((Convert.ToDecimal(No2 * 100) / No1))) / 100);
在代码中,除法是在十进制转换之前计算的,因此您只转换除法的整数结果。
除了使用Math.Round而不是Math.Truncate,以获得您想要的结果。