【问题标题】:SQL set floating point precisionSQL设置浮点精度
【发布时间】:2012-06-23 00:12:49
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: sql floating-point precision truncate


    【解决方案1】:

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

    如果您只想截取指定的小数位数,您可以使用ROUND,即:

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

    【讨论】:

    • 应该注意,如果你使用 float(n) 来表示除 24 或 53 以外的一些 n,它会被四舍五入为 24 或 53
    【解决方案2】:

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

    整数是另一回事。整数——存储、转换或强制转换为浮点数据类型——将精确存储在一个大范围内。浮点数据类型不必为整数存储任何小数单位。

    我建议,虽然对你来说最好的做法是

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

    【讨论】:

      猜你喜欢
      • 2014-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多