2011年9月30日

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

中田です

ご教授ありがとうございます。

BigDecimal を勉強してみます。
奥が深そうですね。


On 2011/09/29, at 11:46, Tetsuya Imamura wrote:

> こんにちは、今村です。
>
> 標準添付ライブラリ 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)
>> ====================
>

===================================
株式会社アチーブメント・コンサルティング
中田 隆雄
nakada@xxxxx
===================================

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




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