そもそも、beginとendのオブジェクト及びRangeのメソッドによって、
離散値として扱う場合と、連続量として扱う場合が混ざってしまってるんですよね。

> わたしRubyをまったく知らないんですけど、rangeに対するmaxってようするに
>
> 1) rangeの範囲に収まる整数値をすべて取り出す
> 2) その集合に対して、最大の数値を取り出す
>
> という操作をしているわけですよね。ここで、(1)で整数値が1つも取り出せなかった
> (今回のケース)のときにtype errorになるのは納得できるのですが、そうじゃないときも
> errorにするのが親切なんですかね?
>
> end-1がbeginより小さかったらエラー。というロジックだと困ります?endが
> 非整数値のときの扱いにも同じ疑問があるのですが。

離散値を扱うと思ってるとこれでもよさそうなんですが、
そうすると今度は(1..1.5).max #=>1.5
になっているのが1にしないといけなくなってしまい、割と大変更になりそうです。

-- 
樽家昌也(Masaya TARUI)
No Tool,No Life.