こんにちは、あくつといいます。
#素人発言です。 (^^ )>>

    a,b は正の整数
    a - b は、a < b ならば、負の整数

    a,b は整数( b != 0 )
    a / b は、a % b != 0 ならば、有理数

    b は整数
    b ** a は、a が有理数ならば、実数

    Ruby は 1-3 で負の整数を生成する。
    Ruby は 1/3 で有理数を生成しない。
    Ruby は 3**(1/2) で実数を生成しない。# 3**(0) だから 1

    Ruby は、整数を整数の中に閉じ込めるから当然。
    AWK と比較。

$ cat n.awk 
BEGIN{
    for( i=1; i<=10; i++ ){
        printf("%d / %d = %f\n", i, 10, i / 10);
    }
    printf("%d**(%d/%d) = %f\n", 3, 1, 2, 3**(1/2));
    exit(0);
}
$ cat n.rb
BEGIN{
    1.upto(10){ |i|
        printf("%d / %d = %f\n", i, 10, i / 10)
    }
    printf("%d**(%d/%d) = %f\n", 3, 1, 2, 3**(1/2))
    exit(0)
}
$ gawk -f n.awk
1 / 10 = 0.100000
2 / 10 = 0.200000
3 / 10 = 0.300000
4 / 10 = 0.400000
5 / 10 = 0.500000
6 / 10 = 0.600000
7 / 10 = 0.700000
8 / 10 = 0.800000
9 / 10 = 0.900000
10 / 10 = 1.000000
3**(1/2) = 1.732051

$ ruby n.rb
1 / 10 = 0.000000
2 / 10 = 0.000000
3 / 10 = 0.000000
4 / 10 = 0.000000
5 / 10 = 0.000000
6 / 10 = 0.000000
7 / 10 = 0.000000
8 / 10 = 0.000000
9 / 10 = 0.000000
10 / 10 = 1.000000
3**(1/2) = 1.000000

$
    AWK ユーザーからすると、この結果は不気味です。
    int / int を再定義すれば AWK と同じにできますが。

$ cat real.rb

require 'rational'
class Fixnum
    alias _old_division /
    def / (obj)
        if obj.kind_of?(Integer) && (self % obj)!= 0
            Rational(self, obj)
        else
            self._old_division obj
        end
    end
end

class Bignum
    alias _old_division /
    def / (obj)
        if obj.kind_of?(Integer) && (self % obj)!= 0
            Rational(self, obj)
        else
            self._old_division obj
        end
    end
end

$ ruby -rreal.rb n.rb
1 / 10 = 0.100000
2 / 10 = 0.200000
3 / 10 = 0.300000
4 / 10 = 0.400000
5 / 10 = 0.500000
6 / 10 = 0.600000
7 / 10 = 0.700000
8 / 10 = 0.800000
9 / 10 = 0.900000
10 / 10 = 1.000000
3**(1/2) = 1.732051

$

    今からこれを標準とするのは難しいかなと思います。
    でも、「AWK と同じですよ」というのは言いやすいですね。