[#47173] 小数点以下を切り捨てる方法について — "T.Soejima" <clev@...2.so-net.ne.jp>

お世話になっております。そえじま@勉強中です。

16 messages 2010/06/23

[ruby-list:47189] Re: 小数点以下を切り捨てる方法について

From: Yusuke Yamasaki <y-yamasaki@...>
Date: 2010-06-24 10:08:02 UTC
List: ruby-list #47189
山崎(ゆ)です。

> 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 <y-yamasaki@salvus.jp>


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 <y-yamasaki@salvus.jp>
> > 
> > 
> > On Wed, 23 Jun 2010 17:51:55 +0900 T.Soejima wrote:
> > > お世話になっております。そえじま@勉強中です。
> > > 
> > > Rubyで 1.2345678 のような桁数の小数を、例えば 1.2345 と表示させて
> > > くれるようなメソッドはありますでしょうか?
> > > 
> > > 計算でまかなっても良さそうですが、値の変化が早いデータなので、できれ
> > > ばメソッド一発で処理できるとありがたいのですが・・・
> > > 
> > > Rubyは 1.8.7 を使用しております。
> > > 稚拙な質問かもしれませんが、ご教示のほどよろしくお願いいたします。
> > 
> > 
> > 


In This Thread

Prev Next