ROUND関数で四捨五入ができない理由と解決方法

このQ&Aのポイント
  • XAMPP 1.7.3の MySQL 5.1.41を使用している場合、ROUND関数を使用しても8.5や4.5のような小数点以下5以上の場合に四捨五入ができません。
  • この問題の解決方法として、MySQL 5.1.41ではFLOOR関数を組み合わせて使用することで、正確な四捨五入を実現することができます。
  • 具体的な解決方法は、ROUND関数の代わりにFLOOR関数を使用してカラムの値を切り捨て、その後ROUND関数を使って切り捨てた値に0.5を加えることです。
回答を見る
  • ベストアンサー

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
  • 回答数2
  • ありがとう数10

質問者が選んだベストアンサー

  • ベストアンサー
  • byDesign
  • ベストアンサー率75% (45/60)
回答No.1

ROUNDは銀行丸め(五捨五入)ですね。 truncate(カラムA + 0.5))でどうでしょうか?

drago_cyber
質問者

お礼

カラムの値が'*.7''*.3'だったりするので、CASE文を使って'+5'してみます。 ありがとうございました。

その他の回答 (1)

回答No.2

こんにちは。 MySQLのROUNDは(それに限りませんが・・・)、銀行丸めという方法で四捨五入します。 丸め桁(この場合は小数点1桁)が5の場合、結果が偶数に近い方に丸められます。

drago_cyber
質問者

お礼

そうだったのですか。ありがとうございます。

関連するQ&A

  • Round関数は四捨五入?

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

  • 四捨五入について

    今、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を取得しようとすると構文エラーになります。 どうしたらいいのでしょうか? よろしくお願い致します。

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

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

  • round関数について

    試しにエクセルで次の計算をしてみてください。 -16.76 7.9 -11.45 -8.88 -1 4.26 33.78 以上を全部足します。つまり「=sum(a1:a7)」です。当然「7.85」になります。 次に四捨五入します。round関数で小数点第2位を四捨五入して、第1位まで表示させます。つまり、「=round(sum(a1:a7),1)」ということです。すると「7.8」を返しました。 ん?「7.9」なのでは?と思い、次にこんな計算をしてみました。 A・・・=round(sum(a1:a7),2) B・・・=round(A,1) つまり、Aでいったん小数点第3位を四捨五入させた上で、その値を今度はBで小数点第2位を四捨五入させ、最終的に小数点第1位まで表示させたわけです。すると、ちゃんと「7.9」を返しました。 なんでこんな風になるのでしょうか?どうして一発で「7.9」にならないのでしょうか?

  • 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の倍数の整数での値が欲しいです。 よろしくお願いします。

  • Excelの関数、四捨五入について

    ご質問があります。 現在Excelで表を作っているのですが、どうしても四捨五入で躓きます。 例) A 1234.56 →四捨五入(ROUND.1) →B 1235 上記のようになるのですが 例) B 1235×0.9 → 1111.1(小数点第一表示) 上記のようになってしまいます。 四捨五入したBのセルに対し0.9をかけているはずなのに 四捨五入を行う前のAに0.9をかけた答えが出てしまうのです。 これの謎が解けず困っています。 どなたかお分かりの方がいましたら宜しくお願い致します。

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

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

  • #Func! 四捨五入

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

  • エクセル関数の四捨五入(?)について

    困っています。 エクセルの四捨五入はROUND関数を使えばいいと思いますが、 下記の場合どうすればいいかわかりません。 0.25~0.74 の範囲= 0.5にする 0.75~0.24 の範囲= 0にする したがって、 15.9ならば16に。 15.3ならば15.5にしたいのです。 こういう類の表が100近くあり、効率よくできないかなとおもって・・・ ユーザー関数とかでつくらないといけないんでしょうか?

  • エクセルのROUND関数で・・

    エクセルの関数を使って計算してるんですが、答えが合わないんです。 =ROUND($B31*$D31,2) $B31 には 3.900 $D31 には 3.55 二つをかけた値「13.845」の、少数第2位を四捨五入して返した値が、13.9 と出るんです。 少数第2位の 4 を四捨五入したら 13.8 が返されるはずですよね? 今日朝から一日悩んでます(+_+) パソコンには詳しくないので解り易くどなたか教えてください<m(__)m>