粗茶でございます日本語 プログラミング 言語 「なでしこ」 大好き 

スポンサーサイト

   ↑  --/--/-- (--)  カテゴリー: スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(記事編集) http://nadesocha.blog.fc2.com/?overture" target="_new

--/--/-- | Comment (-) | ホーム | ↑ ページ先頭へ ↑ |

切り捨てと切り下げ

   ↑  2009/09/11 (金)  カテゴリー: 未分類

 切り捨てではなく、切り下げの理由

 切り下げの説明にある、

「数値を負の無限大方向へ切り下げて返す。」

 ・・・とは?


 数直線上で中央をゼロ、右方向を正の方向、左方向を負の方向とした場合で説明します。このとき、例えば-3から3までの数字は次のように並びます。

・・・-3・・・-2・・・-1・・・0・・・1・・・2・・・3・・・

 右の方へずっと行くと、正の数がどんどん大きくなります。この右方向の行く先が「正の無限大方向」です。そして左の方へずっと行くと、負の数が大きくなります。この左方向の行く先が「負の無限大方向」となるわけです。

 さて、正の小数1.5と負の小数-1.5を切り下げてみます。

←負の無限大方向               正の無限大方向→
・・・-2・・・-1.5・・・-1・・・0・・・1・・・1.5・・・2・・・

 正の小数1.5の「負の無限大方向」にある整数は1です。

・・・0・・・1←←←1.5・・・2・・・

なので、1.5を切り下げた結果は、1となります。

 次に、負の小数-1.5の「負の無限大方向」にある整数は-2です。

・・・-2←←←-1.5・・・-1・・・0・・・

なので、-1.5を切り下げた結果は、-2となります。

 では、切り捨てと切り下げはどう違うのでしょうか?

 切り捨てのイメージでは、-1.5の切り捨ては-2ではなく-1となりそうです。「-1.5」から「.5」を切り離して捨てると考えれば、「-1」が残るからです。その結果、値は大きくなります。-1.5 < -1ですから-1の方が大きいですね。

 しかし、切り下げですから、値を下げるというイメージで「-1.5」よりも小さな整数である「-2」となるのです。結果として、値は小さくなります。-2 < -1.5ですね。

 少し調べた程度では、数学的にマイナスの数を切り捨てた場合、正の方向に動くのか、負の方向に動くのか分かりませんでした。数学的にどちらが正しいのでしょうか?


 さらにやっかいなことに、「小数点切り下げ」命令では、まさに小数点以下の指定した桁以下を切り取って捨ててしまうのです。「-5.55」を小数点以下1桁に切り下げると、「-5.5」となります。これは「-5.55」から「5」を切り取っているだけです。「負の無限大方向」に切り下げるならば「-5.6」となるべきですが・・・


 このことは「切り上げ」「小数点切り上げ」命令でも同様の現象が起こっています。

 今は、こういった挙動について何が正しいのか分かりませんので、「このように動作するもの」として受け入れるしかありません。

 プログラミングで使用する場合、気をつけたいと思います。

※2008年10月15日の記事を転載

関連記事

(記事編集) http://nadesocha.blog.fc2.com/blog-entry-67.html

2009/09/11 | Comment (0) | Trackback (0) | ホーム | ↑ ページ先頭へ ↑ |
この次の記事 : ミックスジュース
この前の記事 : 公式とは残念。

Comment

コメント:を投稿する 記事: 切り捨てと切り下げ

お気軽にコメント:をぞうぞ。
非公開 (管理人のみ閲覧可能なコメント:) にしたい場合には、ロック にチェックを入れてください。

  任意 : 後から修正や削除ができます。
  非公開コメント:として投稿する。(管理人にのみ公開)

Trackback

この次の記事 : ミックスジュース
この前の記事 : 公式とは残念。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。