实数和浮点数十进制长度和精度

时间:2013-02-27 15:53:21

标签: sql sql-server

我理解float and real are

  

用于浮点数字的近似数字数据类型   数据。浮点数据是近似值;因此,并非所有的价值观   数据类型范围可以准确表示。

但是,在以下示例中:

Q1:为什么'浮动( 24 )'(即;实际)提供更多小数而不是< em>'float( 53 )'还不太准确?

Q2:如何将 @s存储在数字字段中,因为它没有舍入?

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

Results(括号是为了使差异更清晰)

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

1 个答案:

答案 0 :(得分:0)

Q1。它只是一个显示问题,对于其他数字可能会有所不同。它将在更适合的地方进行舍入(它将更接近数字的实际近似值)。精度较低,因为它存储数字的数据较少。

Q2。在mssql中(作为标记状态为sql-server),您可以创建一个小数,并且您将存储该数字而不会丢失精度。但是你可以存储的数量是有限的。