Float
为什么Real
在sys.columns
或Information_schema.columns
precision <= 24
时存储为CREATE TABLE dummy
(
a FLOAT(24),
b FLOAT(25)
)
。
SELECT TABLE_NAME,
COLUMN_NAME,
DATA_TYPE,
NUMERIC_PRECISION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'dummy'
检查数据类型
+------------+-------------+-----------+-------------------+
| TABLE_NAME | COLUMN_NAME | DATA_TYPE | NUMERIC_PRECISION |
+------------+-------------+-----------+-------------------+
| dummy | a | real | 24 |
| dummy | b | float | 53 |
+------------+-------------+-----------+-------------------+
结果:
float
当real
小于或等于precision
时,为什么24
存储为require 'numerizer'
require 'chronic'
puts Chronic::Numerizer.method(:numerize).source_location
class Chronic::Numerizer
def self.numerize(value)
puts "here"
raise
end
end
puts Chronic::Numerizer.method(:numerize).source_location
#p Chronic::Numerizer.numerize(3)
p Chronic.parse('January 2nd')
。这是在某处记录的吗?
答案 0 :(得分:3)
real的ISO同义词是float(24)。
Please refer for more info:
https://msdn.microsoft.com/en-us/library/ms173773.aspx
答案 1 :(得分:3)
来自讨论T-SQL中float
和real
之间差异的MSDN article:
real的ISO同义词是float(24)。
float [ (n) ]
其中n是用于以科学计数形式存储浮点数的尾数的位数,因此,它决定了精度和存储大小。如果指定了n,则它必须是介于1和53之间的值.n的默认值为53。
n value | Precision | Storage size
1-24 | 7 digits | 4 bytes
24-53 | 15 digits | 8 bytes
SQL Server将n视为两个可能值之一。 如果1 <= n <= 24,则将n视为24.如果25 <= n <= 53,则将n视为53.
至于为什么SQL Server将其标记为real
,我认为它只是一个同义词。但是,在引擎盖下它仍然是float(24)
。