• 締切済み

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

  • ROUND関数で、四捨五入ができない。

    ROUND関数で、四捨五入ができない。 カラムの値が'8.5'の場合'9'になるはずなのですが、'8'となってしまいます。 解決方法ありますでしょうか? '4.5''6.5'の場合でも、四捨五入ができないです。 SELECT カラムA,ROUND(カラムA) FROM テーブル ----------------------------------------  カラムA |  ROUND(カラムA) ----------------------------------------   5.5   |   6          ←四捨五入ができている ----------------------------------------   8.5   |   8          ←四捨五入ができない ----------------------------------------   4.5   |   4          ←四捨五入ができない ---------------------------------------- XAMPP 1.7.3の MySQL 5.1.41を使用しています。

    • ベストアンサー
    • MySQL
  • 四捨五入について

    今、SELECT文で取得した値をround()を使って四捨五入したいのですが、構文エラーになります。 SELECT ROUND( SELECT 0.2*(SLECT number FROM sample WHERE id =1) ); ROUND()内のSELECT 0.2*(SLECT number FROM sample WHERE id =1) で、値が12,6のように返ってきます。 しかし、round()で四捨五入して13を取得しようとすると構文エラーになります。 どうしたらいいのでしょうか? よろしくお願い致します。

  • エクセルのROUND関数(金額によって違う四捨五入)

    エクセルのROUND関数に関して質問があります。 下一桁を四捨五入するやり方については、 ROUDN(-1)で出来ることはわかっています。 100円台は下一桁(1円単位)のみ四捨五入し、 1万円台は下2桁(10円単位)まで四捨五入するという やり方を同じセル上でやりたいのですが、方法はありますでしょうか? ご回答宜しくお願いします。

  • 百の位での四捨五入について

    SQL server2000での四捨五入を教えてください。 百の位を見て、四捨五入し、千円単位で丸めたいです。 <例> 12,499 ⇒ 12 11,800 ⇒ 12 12,500 ⇒ 13 よろしくお願いします。

  • ACCESSのRound関数について

    お世話になっております。 ACCESSのクエリでRound関数を使い、小数点以下を四捨五入した値を表示させようと思いましたが、なぜか 1876.5→1876 と表示されてしまいます。 同じ列のほかのセルはちゃんと四捨五入した値が表示され、5389.5 も 5390 のように表示されます。 どなたか思い当たる方原因を教えていただけますでしょうか。 よろしくお願いします。

  • PHP5における四捨五入について

    PHP5でラウンド関数を使用しても境界値の5の値を切り捨ててしまい,四捨五入が上手くできません。 具体的には,以下の感じです。 $C = ROUND($B / $A,2) "C=282.25" $D = ROUND($C,1) "D=282.2" ※データ型は特に定義していません。 どのようにしたら四捨五入が上手くできるか教えて頂けないでしょうか。よろしくお願いします。

  • Excel2000で変則的な四捨五入の関数を教えて下さい。

    関数式を教えて下さい。 小数点以下を四捨五入した結果を整数で出したいです。 但し、普通のROUND関数で出た答えを尚も、下一桁が5づつ飛ぶように.. たとえば、 100.5--101--100(求めたい値) 101.7--102--100(求めたい値) 102.5--103--105(求めたい値) 105.8--106--110(求めたい値) 112.4--112--110(求めたい値) 113.5--114--115(求めたい値) 118.5--119--120(求めたい値) こんな感じです。(中央の値は特に必要ではありません) 四捨五入し、且つ5の倍数の整数での値が欲しいです。 よろしくお願いします。

  • #Func! 四捨五入

    T_一覧の件数フィールドには、1234などの数字が入っているのですが、10の位を四捨五入したいのですが、 クエリでどうやって作ればいいのでしょうか? SELECT T_一覧.件数, Round([T_一覧]![件数],-2) AS 四捨五入 FROM T_一覧; にすると、#Func!になってしまいます。

  • エクセル 負の値の四捨五入

    エクセルのバージョンは2002です J404セルは、千円単位での入力(書式ではなく)がなされており、たとえば10万500円なら「100.5」と入力されています。 そこで、これを円単位に修正したうえで円未満を四捨五入したいのですが、 このセルの値として、正の値と負の値の両方が考えられる場合にROUND関数をどのように使ったらいいでしょうか? 実際に「-4533.5695」や「-830.521700000002」という値があり、 =IF(J404>0,ROUND(J404*1000,0),ROUND(J404*-1000,0)*-1) などと試したのですがうまくいきません。 ROUNDDOWNを組み込んでも駄目でした。 負の値をうまく四捨五入できる式は無いでしょうか? よろしくお願いします。

  • 四捨五入に関して

    すでに似たような四捨五入の質問&回答が載ってますが、 自分のパターンは上手くいきませんでした。 例えば、"17174.7655"という数字を"17180"みたいに1桁目まで四捨五入をしたい場合、どのように記述すれば良いのでしょうか? また、Format関数を使用するとどのような書き方になりますか?