ภาพรวม
บทความนี้ซ้ำกับบทความก่อนหน้า (1004092264) เนื้อหาเกือบเหมือนกัน นี่คือเวอร์ชันปรับปรุงพร้อมเพิ่มเติม
โค้ดตัวอย่าง
using System;
using System.Linq;
public class Program {
public static void Main() {
int[] myArr = { 8, 4, 2, 5, 9, 14 };
// Manual calculation
int len = myArr.Length;
int sum = 0;
for (int i = 0; i < len; i++) {
sum += myArr[i];
}
int average = sum / len;
Console.WriteLine($"Sum = {sum}");
Console.WriteLine($"Average (int) = {average}");
// LINQ
double avgDouble = myArr.Average();
Console.WriteLine($"Average (double) = {avgDouble}");
}
}
ผลลัพธ์
Sum = 42
Average (int) = 7
Average (double) = 7
เนื้อหาเพิ่มเติม: สถิติพื้นฐาน
using System;
using System.Linq;
public static class Statistics {
public static (int Sum, double Average, int Min, int Max, double StdDev) GetStats(this int[] arr) {
if (arr.Length == 0) throw new InvalidOperationException("Empty array");
int sum = arr.Sum();
double avg = arr.Average();
int min = arr.Min();
int max = arr.Max();
// Standard Deviation
double variance = arr.Select(x => Math.Pow(x - avg, 2)).Average();
double stdDev = Math.Sqrt(variance);
return (sum, avg, min, max, stdDev);
}
}
// ใช้งาน
int[] data = { 8, 4, 2, 5, 9, 14 };
var stats = data.GetStats();
Console.WriteLine($"Sum: {stats.Sum}");
Console.WriteLine($"Avg: {stats.Average:F2}");
Console.WriteLine($"Min: {stats.Min}");
Console.WriteLine($"Max: {stats.Max}");
Console.WriteLine($"StdDev: {stats.StdDev:F2}");
ผลลัพธ์
Sum: 42
Avg: 7.00
Min: 2
Max: 14
StdDev: 3.89
คำเตือน: Integer Division
// ผลลัพธ์อาจไม่ถูกต้องถ้าไม่ cast
int[] arr = { 1, 2 };
int avg = arr.Sum() / arr.Length; // 1 (ผิด - ควรเป็น 1.5)
double avgCorrect = arr.Average(); // 1.5 (ถูกต้อง)