電子書籍の厳選無料作品が豊富!

以下のようなデータ型の掛け算を行った場合の
有効桁数について教えてください。

decimal(38,4) × decimal(26,25)

私が確認したところ、
decimal(38,6)になっているようです。

なぜこのような結果になるのか分かりません。
どなたか教えていただけないでしょうか?

A 回答 (2件)

MSの正式なコメントではありませんが、以下のサイトに


>An implementation decision was made to sacrifice some scale to gain more digits on the left side of the decimal point, up to a minimum of scale 6. So the numeric(77,20) is actually converted to numeric(38, 6). The same behavior happens for division.
というスタッフのコメントがあります。

「有効桁数38を超えた場合の切り詰め処理は小数点第6位までを限度に行う」という仕様みたいですね。

参考URL:http://www.bokebb.com/dev/english/2011/posts/201 …
    • good
    • 0
この回答へのお礼

「有効桁数38を超えた場合の切り詰め処理は小数点第6位までを限度に行う」という仕様があったのですね。
ありがとうございます。

しかし、なぜ6位までを限度にしているのでしょう?
それについての説明、
もしくは6位というのは規定値で、
それを設定するプロパティなどがあるのか、
どなたかお知りではないでしょうか?

お礼日時:2009/01/09 15:49

RDBMSは、ここのカテゴリ通りSQL Serverですか?


バージョンは、何でしょうか?

マニュアルは、見ましたか?
http://msdn.microsoft.com/ja-jp/library/ms190476 …

この回答への補足

RDBMSは、ここのカテゴリ通りSQL Server2005です。
教えていただいたマニュアルを参考にしてみましたが、
小数点以下の丸めについては
「* 結果の有効桁数と小数点以下桁数の絶対最大値は 38 です。結果の有効桁数が 38 を超える場合、結果の整数部分が切り捨てられないように、対応する小数点以下桁数が減らされます。」
という記述があるたけで、どのように減らされるのかの説明がみつかりませんでした。

補足日時:2009/01/09 17:38
    • good
    • 0

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