• 締切済み

Round関数は四捨五入?

あるサイトで・・・ ”多くのRound関数は、偶数丸めを採用しており、 丸め単位のまんなかで、どっちつかずの場合は、偶数側を採用する。” ということが書いてあるのを読みました。 しかし、SQL Server2000のクエリで select round(1.25,1) と実行すると 1.2ではなく1.3 が返ってくるので、四捨五入されている気がします。 厳密な四捨五入と異なる値が返ってくるパターンはどういう式でしょうか? それとも、SQL Server2000のRound関数は厳密な四捨五入なのでしょうか? ご存知の方がいたら教えてください。 よろしくお願いします。

みんなの回答

  • iiikkk
  • ベストアンサー率37% (92/247)
回答No.3

アメリカでは、四捨五入といったら偶数丸めだそうです。 私は、C#で開発を行っているのですが、C#では1.2と返ってきます。 1.24→1.2 1.25→1.2 1.26→1.3 1.25で1.3が返ってくるということは、SQLServer2000は厳密(日本風)な四捨五入なんでしょうね。 参考までに。

choco1110
質問者

お礼

回答ありがとうございます。 言語によって違うのですね。 VBAで試してみたら、1.25→1.2でした。

  • miwaharu
  • ベストアンサー率25% (29/112)
回答No.2

私も聞いた話なので、具体的な例は挙げられませんが、 十進数の0.1は2進数では、厳密には表示できないそうです。 ですから、2進数表記した場合、の中間値で偶数をとる という意味ではないでしょうか。

choco1110
質問者

お礼

回答ありがとうございます。 私も聞いた話では、具体的におかしくなる場合があるらしいのです・・・ いったいどういう数値だとおかしくなるのか知りたいところです。 プログラムでRoundを使用しているので、四捨五入でない値が戻ってくると困るってしまうのです。

  • pjunk
  • ベストアンサー率32% (10/31)
回答No.1

JIS丸めだと思います。 コンピュータに限らず、実験データなどの丸め方が決められていて、ROUND関数などはそれにしたがっている場合が多いです。 JIS Z8401-1999で検索すればいくつかヒットします。

参考URL:
http://www.bsddiary.net/doc/jis-z8401.html
choco1110
質問者

お礼

回答ありがとうございます。 参考URLのページを見てみました。 数値の丸めって、いろいろあって難しいのですね。

関連するQ&A