当前位置: 首页 > 面试题库 >

在SQL Server 2008中将float转换为十进制

边国安
2023-03-14
问题内容

我有一个视图,它需要为存储为float的列返回类型十进制。

我可以将每一列转换为十进制,如下所示:

, CAST(Field1 as decimal) Field1

这种方法的问题在于,十进制默认值为18,0,这会自动将float列舍入为0。我想保持最多12个小数位的精度。

但是,如果我这样做:

, CAST(Field1 as decimal(12,12)) Field1

我收到一个运行时错误:

"Arithmetic overflow error converting float to data type numeric"

浮点列定义为长度:8精度: 表中的 53 。我无法修改有关该表的任何内容。

什么是将其强制转换为小数而不丢失小数精度的正确方法?


问题答案:

12, 12表示小数点分隔符前没有数字:12总计数字,其中小数点12后。

使用更合适的范围,例如:

DECLARE @var FLOAT = 100
SELECT  CAST(@var as decimal(20,12))

这会8在分隔符之前为您提供数字,或根据需要进行调整。



 类似资料:
  • 问题内容: 如何在Java中将十六进制字符串转换为单精度浮点数? 例如,如何实现: 浮点数f = HexStringToFloat(“ BF800000”); // f现在应包含-1.0 我问这个是因为我尝试过: 但是我得到以下异常: java.lang.NumberFormatException:对于输入字符串:“ bf800000” 问题答案:

  • 问题内容: 如何将 float64 值转换为Golang的 十六进制字符串 ?(IEEE 754格式) 样本:-561.2863至0xc40c5253 问题答案: 用途: 游乐场:http : //play.golang.org/p/WEZEtCU1Zl。

  • 问题内容: 我正在尝试编写将数字转换为二进制的代码,这就是我写的。它给了我一些我不理解的Eclipse错误。怎么了 还有其他建议吗?我想学习并听取任何修复建议。谢谢。 错误消息: 类型中的方法不适用于参数() 这行有多个标记 令牌“ ”的语法错误,;; 预期 令牌“ ”的语法错误,;; 预期 是变量的无效类型 这行有多个标记 令牌“ mod”的语法错误,无效的AssignmentOperator

  • 问题内容: 如何在JavaScript中将十进制值转换为等效的十六进制值? 问题答案: 使用以下命令将数字转换为十六进制字符串: 并通过以下步骤逆向处理:

  • 问题内容: 如上面的标题。我想从一个十六进制数字 我想转换为。 问题答案:

  • 问题内容: 的十六进制值是,但使用 得到答案 问题答案: 这是由于SQL Server解释没有限定类型的文字的方式。看一下这个