From: Yusuke Yamasaki Date: 2010-06-24T19:08:02+09:00 Subject: [ruby-list:47189] Re: 小数点以下を切り捨てる方法について 山崎(ゆ)です。 > 1.2344999999999999.truncate_f(4) > まで9を並べたら、1.2345になりました。 では、入力は文字列ということにして、 require 'bigdecimal' class String def to_ss(pos) a=BigDecimal.new(self) b=BigDecimal.new((10**pos).to_s) c=(a*b).to_i/b c.to_f.to_s end end "1.2344999999999999".to_ss(4) #=> "1.2344" _______________________ Yusuke Yamasaki On Thu, 24 Jun 2010 17:11:43 +0900 Endo Akira wrote: > 遠藤です。 > ちょっとあやしいよねえ、と試してみたら、 > 1.2344999999999999.truncate_f(4) > まで9を並べたら、1.2345になりました。 > ruby 1.8.6 (2010-02-04 patchlevel 398) [i386-mingw32] > です。 > ----- Original Message ----- > > 山崎(ゆ)です。 > > > > こんなんどうでしょう。 > > > > class Numeric > > def truncate_f(pos) > > (self*10**pos).to_i.to_f/10**pos > > end > > end > > > > 1.2345678.truncate_f(4) #=> 1.2345 > > > > こういうのは例が多いほうが欲しい回答がつくと思います > > > > _______________________ > > Yusuke Yamasaki > > > > > > On Wed, 23 Jun 2010 17:51:55 +0900 T.Soejima wrote: > > > お世話になっております。そえじま@勉強中です。 > > > > > > Rubyで 1.2345678 のような桁数の小数を、例えば 1.2345 と表示させて > > > くれるようなメソッドはありますでしょうか? > > > > > > 計算でまかなっても良さそうですが、値の変化が早いデータなので、できれ > > > ばメソッド一発で処理できるとありがたいのですが・・・ > > > > > > Rubyは 1.8.7 を使用しております。 > > > 稚拙な質問かもしれませんが、ご教示のほどよろしくお願いいたします。 > > > > > >