Enumerable.Range(1, 10) で小数点を作りたい(0.1, 0.2, ..., 1.0)場合、どうやるの?
Enumerable.Range()
はint
のシーケンスを返しますよね。これのdouble
型をやるにはどうするの?という疑問に、専用のRange()
オーバーロードがあるのかと思いきや無かったので、備忘録です。
各命令と出力結果は、LINQPad の動作結果のコピペです。
目次
int の場合
これは普段通り。
// 1..10 var seq1 = Enumerable.Range(1, 10).Dump();
IEnumerable<Int32> (10 items) 1 2 3 4 5 6 7 8 9 10
double の場合1
double 型にキャストしたところで、1~10 までと変わらんやんけ。と気が付きました。頭が良いので。
// 1.0, 2.0, ..10.0 var seq2 = Enumerable.Range(1, 10).Select(x => (double)x).Dump();
IEnumerable<Double> (10 items) 1 2 3 4 5 6 7 8 9 10
double の場合2
で、掛け算して小さくして作るのか、と分かりました。
// 0.1, 0.2, ... 1.0 var seq3 = Enumerable.Range(1, 10).Select(x => x * 0.1).Dump();
IEnumerable<Double> (10 items) 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1