1

SQL Server 2000のドキュメント:

次の有効な値を持つ浮動小数点数データです: –3.40E + 38 ~ -1.18E - 38、0 および 1.18E - 38 ~ 3.40E + 38。ストレージ サイズは 4 バイトです。SQL Server では、real の同義語は float(24) です。

SQL Server 2005のドキュメント:

real の ISO シノニムは float(24) です。

編集:私が読んでいるものを考えると、精度は7であると言われていますが、データベース(SQL Server 2005)に最大9を入力できます。同様に、ここで質問番号. 7。

例: 0.180000082

realの真の精度はどのくらいですか? また、精度に影響を与える構成オプション (つまり、互換モード) はありますか?

4

3 に答える 3

8

あなたの答えは、あなたがリンクしたのと同じページにあります:

FLOAT データ型の場合、n は仮数を科学表記法で格納するために使用されるビット数です。

24 ビットの仮数部により、(およそ) 7 桁の精度が得られます ( 2 ^24 ~= 10^7 であるため)。

編集して追加:

誰もが「およそ」と言い続けていることに注意してください - これには理由があります :)

2 進浮動小数点数と 10 進リテラルは、必ずしも直感的に連携できるとは限りません。背景については、すべてのコンピューター科学者が浮動小数点演算について知っておくべきことをお読みください。また、「10 進数で約 7 桁の精度」という表現は、有効数字が 7 桁を超える値を格納できることと矛盾しないことに注意してください。ただし、たとえば、このデータ型は 0.180000082 と 0.180000083 を区別できません。これは、実際にはどちらの正確な値も格納されていないためです。

declare @f1 real
declare @f2 real

set @f1 = 0.180000082
set @f2 = 0.180000083

select @f1, @f2

select @f1 - @f2

------------- -------------
0.1800001     0.1800001

(1 row(s) affected)


-------------
0

(1 row(s) affected)

実際のところ、これは仮数部が 24 ビットの 2 進浮動小数点数でrealある と同じでfloat(24)あり、これを変更する方法はないと思います。正確な 10 進数値を格納する場合、一般に浮動小数点型は適切な選択ではありません。

于 2010-01-13T13:53:07.923 に答える
1

SQL Server は、4 バイトまたは 8 バイトを使用して、10 進数以外の浮動小数点数を格納します。

実数または float<1> から float<24> の範囲の任意の値を指定すると、SQL サーバーは float<24> を内部的に使用します。float または float<25> から float<53> (制限) の範囲で何かを使用する場合、倍精度としても知られる float<53> を使用します。

SQL Server 2005 の float に関する MSDN ドキュメントはこちら: float と real (Transact-SQL)

特定の精度が必要な場合は、代わりに、構成可能な精度とスケールを提供する decimal の使用を検討してください: decimal と numeric (Transact-SQL)

于 2010-01-13T13:57:12.113 に答える
1

2 進数 (基数 2) の精度と 10 進数 (基数 10) の精度を混同しています。24 ビットでは、約 7 桁の 10 進数が得られます。

于 2010-01-13T13:50:53.017 に答える