From: rubikitch Date: 2001-07-31T18:43:34+09:00 Subject: [ruby-list:30782] Re: int/int => float? From: matz@ruby-lang.org (Yukihiro Matsumoto) Subject: [ruby-list:30771] Re: int/int => float? Date: Tue, 31 Jul 2001 15:51:48 +0900 るびきちです。 > | 数学には「整数論」というのもある。5/2=2.5 にしたら「素因数分解=素数の > |積に分解する」も計算できなくなる。 > > そうなんですか。できなくなるんですか。数学には弱いんです。だ > から本当はこういう話には首を突っ込みたくは無いんです。^^;;; 素因数分解は大丈夫みたいですね。 #!/usr/bin/env ruby def fact(n) ret = [] x = n return [n] if n <= 1 while(x != 1) 2.upto(x) do |i| if x % i == 0 ret << i x = x / i break end end end ret end p fact 12 p fact 1 p fact 2 p fact 13 p fact 256 しかし、整数をn進数整数に変換する問題だと現在の仕様ならこう書けますけど、 Floatを返されては書けませんね。 ((-divmodを使えというつっこみはなしということで-)) #!/usr/bin/env ruby def base( n, base = 2) ret = [] x = n while( x > 0 ) ret.unshift x % base x = x / base end ret end p base 30, 2 p base 19, 3 > 念の為の話になるんですが、もちろん 5 op 2 = 2 なる整数除算は > 残すんです。divとか//とか別の名前で。それでデフォルトの / を > どうするかって話題です。こういう前提だとどういう結論になりま > すか? 俺も / 「int/int => int」であるべきだと思います。 もしFloatにしたいのならばそれ用に再定義できますし。 Rationalならばmathn.rbがありますね。 るびきち☆ http://voo.to/ruby/ ←Ruby大衆化計画(笑)