整数の平均値を実数で計算したい §
1,2,3,4という整数型の配列の平均値を計算して2.5という結果が欲しいとします。しかし、普通に何も考えないで全ての要素を足してから個数で割ると、結果は整数型になってしまい、小数点以下は消えます。
一度全ての数値を実数型に変換してから計算すれば良いのでしょうか?
実はLINQのAverageメソッドは整数のシーケンスを入力にしても、実数を返してくれるという特徴があるので、これを使うと何も考えなくても実数の平均値が得られます。
罠の数々 §
- 逆にいえば、整数の結果で良くても実数が返ってきてしまう。型の変換に注意しよう
参考リンク §
Enumerable.Average メソッド
Avarageメソッドが実際にどんな型を返してくれるのか、上のリンクから確認しておこう。
バリエーションは多いぞ。
リポジトリ §
https://github.com/autumn009/cshowto
Average §
using System;
using System.Linq;
class Program
{
static void Main()
{
// 整数の配列
int[] ar = { 1, 2, 3, 4 };
// 実はavgはdouble型
var avg = ar.Average();
Console.WriteLine($"Average is {avg}");
}
}
実行結果
Average is 2.5