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

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

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

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

このQ&Aに関連する最新のQ&A

A 回答 (3件)

JIS丸めだと思います。


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

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

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

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

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

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



私は、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

このQ&Aに関連する人気のQ&A

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

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

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

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を使用しています。

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

Aベストアンサー

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

QSQL SERVER2005のJOINについて

はじめて投稿させていただきます。
SQL SERVER2005のJOINの仕方で困っています。
どなたか、アドバイスをお願いできないでしょうか。

テーブルA
CD NAME KBN
1 山田太郎 1
2 山田花子 1
3 山田次郎 2
4 山田五郎 1


テーブルB
CD NENGETU DAY1 DAY2 DAY3 ~ DAY31
1 200811 ◎ ◎  
1 200812 ◎
3 200810
3 200811 ◎
4 200811 ◎

欲しい結果の条件と結果は
テーブルAは、KBN = 1 のみ
テーブルBは、NENGETU = 200811
但し、テーブルBには、テーブルAに存在しないCDもあります。

CD NAME KBN DAY1 DAY2 DAY3 ~ DAY31
1 山田太郎 1 ◎ ◎  
2 山田花子 1
4 山田五郎 1  ◎
以上の結果を取得したいSQLを書きたいのですが、

Select CD,NAME,KBN,DAY1,DAY2,DAY3~,DAY31
From テーブルA
LEFT OUTER JOIN テーブルB On テーブルA.CD =
(Select テーブルB.CD From テーブルB Where テーブルB.NENGETU = 200811)
Where テーブルA.KBN = '1'
Order By テーブルA.CD

とかでやると、CDの1が複数出たりして
おかしい結果になってしまいます。
どなたか、アドバイスをお願いできないでしょうか。

はじめて投稿させていただきます。
SQL SERVER2005のJOINの仕方で困っています。
どなたか、アドバイスをお願いできないでしょうか。

テーブルA
CD NAME KBN
1 山田太郎 1
2 山田花子 1
3 山田次郎 2
4 山田五郎 1


テーブルB
CD NENGETU DAY1 DAY2 DAY3 ~ DAY31
1 200811 ◎ ◎  
1 200812 ◎
3 200810
3 200811 ◎
4 200811 ◎

欲しい結果の条件と結果は
テーブルAは、KBN = 1 のみ
テーブルBは、NENGETU = 200811
但し、テーブルBには、テーブルAに存在...続きを読む

Aベストアンサー

普通に考えると、以下のようになりおますが、どうでしょう?

select A.CD,A.NAME,A.KUBUN,B.NENGETU,B.DAY1,B.DAY2
FROM A
left outer JOIN
(SELECT B.CD,B.NENGETU,B.DAY1,B.DAY2 FROM B WHERE B.NENGETU = 200811) AS B
ON A.CD = B.CD
WHERE A.KUBUN = 1

QRound関数は四捨五入?

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

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

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

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

Aベストアンサー

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

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

参考URL:http://www.bsddiary.net/doc/jis-z8401.html

Qsql server2008の質問です。

sql2008製品版と無償版との違いについて教えてほしいのですが、これまはずっと仕事でsql2008EXPRESS(無償版)で販売管理などのシステムを作成しています。
新しい仕事のユーザーが店舗数10店舗で今ままでの無償版でやったところより店舗数が多く、データ容量やスピードの問題で製品版を考えています。そのあたりで製品版・無償版どちらがお勧めかを教えてください。
現在、無償版で稼動中のユーザーは5店舗でマシンは2008server R2 メモリー2G 1年間のデータで
mdfは350MBです。まだ1年間の稼動ですが帳票を見たりするのが遅いとは言われていません。
新しいユーザーもマシンは同等で、10店舗なので1年間のmdfは約700MBになります。
最低5年は同じmdfで管理します。ちなみにプログラムはAccess2003でSQLのデータを見ています。
新しいユーザーでデータ容量・スピードの観点から製品版・無償版どちらが良いか、またなぜ、それが良いかの理由などを教えてください。
宜しくお願いします。

Aベストアンサー

エディション別の機能比較は、
http://technet.microsoft.com/ja-jp/library/cc645993.aspx
を参照してください。

Express Editionでの制約として、今回のケースで問題になりそうなのは、
データベース使用可能HDD容量:10GB
データベース使用可能メモリ:1GB
だと思います。

容量は、サイジング値から判断すると問題無いように思います。
メモリがネックになる可能性はあります。
使用用途にもよりますが、データ量が増えてきたときに問題になるかもしれません。

APのつくりに左右されますので、
評価環境にて評価をした方が良いかと思います。

Q四捨五入で計算された数字を、整数で返す関数を教えてください。

エクセルで見積金額をだす時に、小数点以下非表示で計算すれば、100.4+100.9+100.4=301.7 302となります。
関数を使い小数点第1位四捨五入で、これを301にしたいのです。
小数点第一位を四捨五入して整数で返すと言うのでしょうか?
(小数以下斬り捨てだと、300になります。INT関数がそうなのでしょうか?)

すみません、関数がまだ良く分かりません。間違っていたり説明がまずかったなら、ごめんなさい。

Aベストアンサー

#2のmshr1962です。勘違いに気づきました。
各数値を四捨五入してから合計ですね。
1セルで行う場合は#3の方のように+でつなげる方法もありますが
行数が多いと大変です。
=SUM(ROUND(A1:A3,0))
と入力してCtrl+Shift+Enterで確定して配列数式にしてください。
又は
=SUMPRODUCT(ROUND(A1:A3,0)*1)
でも計算できます。

一番楽なのは、各見積り額を
=ROUND(単価*数量,0)
で計算したセルを
=SUM(範囲)
で合計ですが...

QSQL SERVER2008の質問です

SQL2008 EXPRESSで作成したバックアップをSQL2008 R2 EXPRESSにデータベースの復元で問題なかったのですが、SQL2008 R2で修正があったので修正したあと、2008R2でバックアップを取ってSQL2008に復元しようとしたらエラーになります。
データベースはバージョン10.50.1600を実行中のサーバーにバックアップされました。このバージョン(バージョン10.00.1600を実行)とは互換性がありません。
と言うメッセージが出ます。
両方をSQL2008R2にすれば問題ないのでしょうが、SQL 2008R2のバックアップをSQL2008に復元する方法をご存知の方は教えてください。
宜しくお願い致します。

Aベストアンサー

Manegement Studioで復元実行時にデータベースの上書きオプションがありますが、これをやってもだめでしょうか?

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

エクセルのROUND関数に関して質問があります。
下一桁を四捨五入するやり方については、
ROUDN(-1)で出来ることはわかっています。

100円台は下一桁(1円単位)のみ四捨五入し、
1万円台は下2桁(10円単位)まで四捨五入するという
やり方を同じセル上でやりたいのですが、方法はありますでしょうか?

ご回答宜しくお願いします。

Aベストアンサー

=ROUND(計算式,IF(計算式>=10000,-2,-1))

というのはいかがでしょう?

QSQL Server2000 ?

あるマシン(Windows XP Pro)には SQL Server が入っています。
ただ何年も放置していたマシンなので 2000 なのか 2005 なのかわかりません。

プログラムの追加と削除で調べると添付のように 2000 と 2005 の両方が表示されてしまいます。
(添付画像がプログラムの追加と削除で表示されている内容です)

実際このマシンにインストールされているバージョンはどちらなのでしょうか?

また SQL Server 2000 のバックアップデータはそのまま復元可能なのでしょうか?
VB6 からアクセスするように組まれていますので、そのまま使いたいと思っています。

Aベストアンサー

2000と2005は同時にインストールする事が出来るので、どちらも入っている可能性があります。
サービスにSQL Server(インスタンス名)があると思いますが、インスタンス名が異なる物が2個有れば、どちらもインストールされていると考えられます。
ただし、最新はSQL Server2008R2ですので、最新に切り替えた方が良いと思います。

Q四捨五入するときの関数は

金額データで、74352を千円未満を四捨五入するときの、データ定義、使用関数を教え願いたい。
(結果は、74000としたい。)

Aベストアンサー

No.1です。

>百未満の時は、Format(値, "0,")*100 ですか。
No.1の回答は、千円未満限定の四捨五入方法です。
桁数によらない、汎用の式は、

=Format(値/100, "0") * 100

です。
式中の「100」の部分を、四捨五入する桁によって、変更します。

QSQL SERVER2005の不具合情報

SQL SERVER2005(9.00.3042.00)を使用していますが、
Excel VBAからのINSERT文やUPDATE文をたまに実行してくれないときがあります。
毎回だったらExcel VBA側のバグだと思うのですが、
たまにしか発生しないのでSQL SERVER側の不具合ではないかと疑っています。

SQL SERVER2005の不具合情報、パッチ情報が掲載されているサイト等がありましたら教えてください。
同様の経験がある方がいらっしゃいましたら情報を下さい。
よろしくお願いします。

Aベストアンサー

補足をお願いします。

uchi38さん、pamanatuさんともに開示する情報が少なすぎます。
少なくともクライアントからの接続形態・現象発生時のエラーコード・メッセージ等を記されないと、どんな識者でも検討はつかないと思います。


人気Q&Aランキング

おすすめ情報