3

これはおそらく新しい質問ですが...私はSQSHのデータベースで作業していて、整数型の値が大きかった(人口属性)。これらを合計したいときに、算術オーバーフローの例外が発生しました。次に、値をDecimalにキャストすると、すべてが正常に機能しました(オーバーフローなし)。しかし、私が読んだところはどこでも、整数と小数は同じものだと言っています。では、なぜこれが起こっているのでしょうか?

前もって感謝します

4

3 に答える 3

4

整数型は、2,147,483,647までの4バイトの数値です。小数は大幅に高くなる可能性があります。どちらも整数として格納されますが、小数点を使用すると、値で小数点以下の桁を表すことができます。整数の代わりにBIGINT(9,223,372,036,854,775,807)を使用することもできます。

于 2011-11-16T02:05:08.317 に答える
3

decimalデータ型の最大制限よりも大きい精度とスケールのデータ型がありintます。たとえば、decimal(18, 0)容量はint(で最大になります2147483647)よりも大きくなります。

確かに、int4バイトしか使用せず、のようなものでより多くのスペース消費を回避することはできませんdecimal(18, 0)。しかし、それはあなたに最大の限界を超えさせるでしょうint

于 2011-11-16T02:04:28.813 に答える
2

BooksOnLineから

10進数と数値

10進数[(p [、s])]および数値[(p [、s])]精度とスケール数を修正しました。最大精度を使用する場合、有効な値は-10 ^38+1から10^38-1までです。

int、bigint、smallint、およびtinyint

長さは4バイトで、-2,147,483,648から2,147,483,647までの数値を格納します。

したがって、DecimalはIntよりもはるかに大きな値を格納できます。

于 2011-11-16T02:05:49.327 に答える