【问题标题】:SQL Data Type for exponent指数的 SQL 数据类型
【发布时间】:2014-05-07 04:34:39
【问题描述】:

在 SQL Server 2008 R2 中存储像 1.74269E-06 这样的值的最佳数据类型是什么?

我尝试输入为float,但值始终为零。请指教。

TIA。

问候,

【问题讨论】:

标签: sql sql-server tsql sql-server-2008-r2


【解决方案1】:

当我将该值插入浮点数据类型时,它不为零。

您可能不小心将其转换为 INT 或显示不正确。

如果您的值非常大或非常小(并且不能以 DECIMAL 形式保存),那么您需要使用 FLOAT

DECLARE @Table TABLE (F FLOAT, D DECIMAL(19,7))

INSERT INTO @Table (F,D)
VALUES(1,1)

INSERT INTO @Table (F,D)
VALUES(1.74269E-06,1.74269E-06)

-- I can see the float here in exponential format
SELECT F,D FROM @Table

-- I can see it here in decimal format
SELECT CONVERT(DECIMAL(19,7),F),D FROM @Table

-- But if I cast to INT it disappears.
SELECT CONVERT(INT,F),D FROM @Table

【讨论】:

  • 最后,我使用浮点数作为指数数学的数据类型。干杯,
【解决方案2】:

请改用decimal

decimal [ (p[ ,s] )] 和 numeric[ (p[ ,s] )] 固定精度和小数位数 数字。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。十进制的 ISO 同义词是 dec 和 dec(p, s)。 numeric 在功能上等同于 decimal。

【讨论】:

  • 我正在尝试创建一个存储过程。在内部,有一个变量,例如: SET Var2 = 0.049747 * (0.32931007 + 1.669994 * Var1 - (POWER(44.002253 * Var1, 2)) + (POWER(735.18335 * Var1, 3)) - (POWER(4749.7294 * Var1, 4) )) .. 如果我在 excel 上计算,结果应该是 1.74269E-06。这就是为什么我要问,这种值的最佳数据类型是什么?
猜你喜欢
  • 1970-01-01
  • 2016-08-13
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 2021-05-26
  • 1970-01-01
  • 2020-10-01
  • 2015-07-21
相关资源
最近更新 更多