プロが教える店舗&オフィスのセキュリティ対策術

あるサイトで・・・
”多くのRound関数は、偶数丸めを採用しており、
丸め単位のまんなかで、どっちつかずの場合は、偶数側を採用する。”
ということが書いてあるのを読みました。

しかし、SQL Server2000のクエリで
select round(1.25,1) と実行すると
1.2ではなく1.3 が返ってくるので、四捨五入されている気がします。

厳密な四捨五入と異なる値が返ってくるパターンはどういう式でしょうか?
それとも、SQL Server2000のRound関数は厳密な四捨五入なのでしょうか?

ご存知の方がいたら教えてください。
よろしくお願いします。

A 回答 (3件)

アメリカでは、四捨五入といったら偶数丸めだそうです。



私は、C#で開発を行っているのですが、C#では1.2と返ってきます。

1.24→1.2
1.25→1.2
1.26→1.3

1.25で1.3が返ってくるということは、SQLServer2000は厳密(日本風)な四捨五入なんでしょうね。

参考までに。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/04/21 19:00

私も聞いた話なので、具体的な例は挙げられませんが、


十進数の0.1は2進数では、厳密には表示できないそうです。
ですから、2進数表記した場合、の中間値で偶数をとる
という意味ではないでしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/04/21 17:28

JIS丸めだと思います。


コンピュータに限らず、実験データなどの丸め方が決められていて、ROUND関数などはそれにしたがっている場合が多いです。

JIS Z8401-1999で検索すればいくつかヒットします。

参考URL:http://www.bsddiary.net/doc/jis-z8401.html
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/04/21 17:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!