2011年9月29日

[ruby-list:48424] Re: 切り捨てについて教えてください

こんにちは、今村です。

標準添付ライブラリ BigDecimal を使うという方法もあります。


require 'bigdecimal'

(1300 * (BigDecimal("0.7"))) #=> #<BigDecimal:100a1e1f8,'0.91E3',9(36)>

(1300 * (BigDecimal("0.7"))).floor # => 910
(1300 * (BigDecimal("0.7"))).truncate # => 910

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/ 今村哲也 Tetsuya Imamura
_/ Office: mail@xxxxx (mailto:mail@xxxxx)
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

日付:2011年9月29日木曜日、時刻:10:18、差出人:中田 隆雄:

> 中田です。
> 早速、ご教授ありがとうございます。
>
> 運用上は
>
> (1300 * (0.7 * 100) / 100) #=> 910.0
> (1300 * (0.7 * 100) / 100).floor #=> 910
> (1300 * (0.7 * 100) / 100).truncate #=> 910
>
> とすれで良いのでしょうか?
>
> 運用上のプログラミングや注意点等を
> ご教授頂けないでしょうか?
>
>
>
> On 2011/09/29, at 4:12, U.Nakamura wrote:
>
> > こんにちは、なかむら(う)です。
> >
> > In message "[ruby-list:48421] 切り捨てについて教えてください"
> > on Sep.29,2011 03:37:29, <acnakada@xxxxx (mailto:acnakada@xxxxx)> wrote:
> > > この違いはなぜでしょうか? 教えてください
> >
> > 目に見えているものが必ず正しいわけでもありません。
> >
> > 一般に、コンピュータの浮動小数点数演算は2進数で行われるため、
> > 我々が扱いたがる10進数で同じ値を考えた場合、割り切れるかどう
> > かが異なるケースがあります。
> > そのため、10進数で考えた場合に当然予測される値と、実際にコン
> > ピュータが計算した結果とが微妙に異なる値となることがあります。
> >
> > 私のコンピュータの場合、1300*0.7の値は具体的には
> > 909.9999999999998863131622783839702606201171875
> > になります。
> > よって、小数点以下の切捨てを行うと909になります。
> >
> >
> > それでは。
> > --
> > U.Nakamura <usa@xxxxx (mailto:usa@xxxxx)>
>
> ====================
> 中田 隆雄
> acnakada@xxxxx (mailto:acnakada@xxxxx)
> ====================


--4e83dbf8_275ac794_183--


投稿者 xml-rpc : 2011年9月29日 11:46
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/107868
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。