如何在C#中不使用内置方法截断小数后多余位数?
手动截断C#数值到两位小数(无内置方法)
实现思路
要截断小数点后多余位数到两位,无需调用任何内置方法,可通过基础数学运算实现:将目标数值乘以100,通过强制类型转换截断小数部分,再除以100还原小数点位置。
修改后的完整代码
static void Main(string[] args) { int[] array = { 6, 2, 3, 2, 12, 1 }; double arithmethicAverage = ArithmethicAverage(array); // 手动执行截断操作 double truncatedAvg = (int)(arithmethicAverage * 100) / 100.0; Console.WriteLine($"Arithmetic average of array is: {truncatedAvg} "); // 输出结果为 4,33 } public static double ArithmethicAverage(int[] array) { double result = 0; for (int i = 0; i < array.Length; i++) { result += array[i]; } result /= array.Length; return result; }
步骤解析
- 移位放大:
arithmethicAverage * 100将原数值的小数点向右移动两位,例如4.3333333333变为433.333333333 - 截断小数:
(int)(...)强制将放大后的数值转换为整数,自动丢弃小数部分,得到433 - 还原移位:
/ 100.0将数值的小数点向左移回两位,最终得到4.33
通用场景补充
如果需要处理负数数值,上述代码同样适用——C#中double转int是向零方向截断,例如 -4.339 经过运算后会得到 -4.33,符合截断需求。
内容的提问来源于stack exchange,提问作者Giorgi Tamazashvili
相关产品推荐
相关产品推荐

