0

我知道float 和 real 是

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

但是,在以下示例中:

Q1:为什么'float( 24 )' (ie; 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),您可以进行小数化,并且您将存储该数字而不会丢失精度。但是您可以存储的数量是有限的。

于 2013-02-27T16:01:19.347 回答