SQL设置浮点精度

时间:2012-06-20 19:19:59

标签: sql floating-point precision truncate

对于正在转换为float的SQL int,如何设置浮点数的精度?

这是我想要截断到两位或三位小数的选择:

AVG(Cast(e.employee_level as Float))avg_level,

谢谢!

2 个答案:

答案 0 :(得分:22)

在TSQL中,您可以为float,24或53指定两种不同的大小。这会将精度分别设置为7或15位。

如果你要做的就是截断到一定数量的小数位,你可以使用ROUND,即:

ROUND(AVG(CAST(e.employee_level as float)), 3)

答案 1 :(得分:3)

作为一般规则,您不能指定浮点数小数点后的位数。浮点数据类型将最接近的浮点近似值存储到任何给定值。最接近的浮点近似不太可能具有您想要的位数。虽然您可以在第三个数字之后抑制每个数字,但这只会改变值的外观,而不是值本身。

整数是一个不同的故事。整数 - 存储,转换或强制转换为浮点数据类型 - 将精确存储在大范围内。浮点数据类型不必存储整数的任何小数单位。

我建议,尽管你最好的做法是

  • 如果您不需要小数单位,或者
  • ,请避免将整数转换为浮点数
  • 如果 需要小数单位,则将整数转换为十进制或数字,或
  • 完全在应用程序代码中处理显示问题。