- PR -

SQLServer2005で四捨五入

1
投稿者投稿内容
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2009-01-14 10:52
 こんにちは。

初歩的な質問で、すいません。

SQLServer2005で四捨五入(小数点1桁目)したいのですが
222.44 は222
222.51 は223にです。

どのようなROUNDは見つけましたが
ROUND(項目,0)でも切り捨てになってしまうのです。

ご教授よろしくお願いします。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2009-01-14 11:16
SQL Serverについては分からないのですが、「ROUND SQLServer」あたりで検索してみたところ、
使えないプログラマーという所に、

使えないプログラマー:T-SQLにおける丸め処理
使えないプログラマー:T-SQL 数値のカンマ編集

という記事があったので、ここらへん工夫すればなんとかできませんでしょうか?
nakaP
大ベテラン
会議室デビュー日: 2005/09/27
投稿数: 138
お住まい・勤務地: 高知
投稿日時: 2009-01-14 13:14
SQL Serverも、.NET Frameworkも、Roundは偶数丸めなんですよね。


_________________
田舎エンジニアのブログ
platini
大ベテラン
会議室デビュー日: 2002/12/03
投稿数: 193
投稿日時: 2009-01-14 17:21
http://www.okada.jp.org/RWiki/index.php?JIS%2CISO%BC%B0%BB%CD%BC%CE%B8%DE%C6%FE

SQLServerや.NET Frameworkの四捨五入規則は
詳細を意識していませんでしたが、
上記サイトが動作原理としてわかりやすく
解説されていると思います。
Toshi
ベテラン
会議室デビュー日: 2007/09/18
投稿数: 68
お住まい・勤務地: 関東のどっか
投稿日時: 2009-01-14 18:23
コード:

select round(222.44, 0)
union all
select round(222.51, 0)

222.00
223.00


となったのですが、結果はこれとは異なるということでしょうか。

ちなみに、元の質問に関係なくて恐縮ですが・・・
引用:

SQL Serverも、.NET Frameworkも、Roundは偶数丸めなんですよね。



.NET FrameworkのRoundは何も指定しないと、最近接偶数丸めですが、
MidpointRoundingの指定をAwayFromZeroにすれば
四捨五入の動きを実現できます。(ただし2.0からですが・・)
http://www.atmarkit.co.jp/fdotnet/dotnettips/700mathround/mathround.html

[ メッセージ編集済み 編集者: Toshi 編集日時 2009-01-14 18:24 ]

[ メッセージ編集済み 編集者: Toshi 編集日時 2009-01-14 18:26 ]
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2009-01-15 10:32
みなさん、ありがとうございました。
未記入
会議室デビュー日: 2009/01/17
投稿数: 7
投稿日時: 2009-01-17 13:55
http://d.hatena.ne.jp/busaikuro/20081209#c1231904331
1

スキルアップ/キャリアアップ(JOB@IT)