0

私はフロートとリアルが:であることを理解しています:

浮動小数点数値データで使用するための近似値データ型。浮動小数点データは概算です。したがって、データ型の範囲内のすべての値を正確に表すことができるわけではありません。

ただし、次の例では:

Q1:「float(24)」(つまり、real)が「float(53)」よりも小数点以下の桁数が多いのに精度が低いのはなぜですか?

Q2: @ sを丸めずにそのまま数値フィールドに格納するにはどうすればよいですか?

declare @s varchar(50) = '34.770438199999944'
select convert(float(24), @s) real_, convert(float(53), @s) float_ 

結果(括弧は差分をより明確にするためのものです)

|             real_ |       float_ |
------------------------------------
| 34.77043(9147949) | 34.77043(82) | 
4

1 に答える 1

0

Q1. これは表示上の問題であり、他の数値では異なる場合があります。より適切な位置で丸められます (数値の実際の近似値により近くなります)。数値を格納するデータが少ないため、精度が低くなります。

Q2. mssql では (タグに sql-server と記載されているため)、10 進数を作成でき、精度を損なうことなく数値を格納できます。ただし、収納できる数には限りがあります。

于 2013-02-27T16:01:19.347 に答える