sql-server - 为什么在 SQL Server 中从 float 到 varchar 的转换要四舍五入?

标签 sql-server sql-server-2005 floating-point

以下 SQL,

declare @a as float, @b as float

select @a=1.353954 , @b=1.353956
select 
CAST(@a as VARCHAR(40)) AS a_float_to_varchar ,
CAST(@b as VARCHAR(40)) AS b_float_to_varchar

结果

a_float_to_varchar                       b_float_to_varchar
---------------------------------------- ----------------------------------------
1.35395                                  1.35396

基于 'float' and 'real' (Transact-SQL)

Float 的精度为 15 位,所以我不确定为什么转换为 varchar 时数字会被四舍五入。

最佳答案

也来自您的链接(实际上是第一行):

Approximate-number data types...

如果您想要精确的精度,请不要使用float

话虽这么说,有一个函数 STR()专门用于将 float 转换为字符数据类型。

关于sql-server - 为什么在 SQL Server 中从 float 到 varchar 的转换要四舍五入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6512046/

相关文章:

javascript - 正则表达式以千、百万等为单位添加逗号(但避免在小数点后添加)Javascript

java - 生成包含在指定值区间内的随机浮点值的最佳方法是什么?

c - 测试 Float 值是否为 NaN

sql - 更改表以根据 Order By 添加 Identity 列

sql - sql server 2008 中的复杂模式匹配

sql - 从表中选择具有最大日期的行的信息

SQL根据多列值过滤搜索

mysql - 包含多个联接的复杂查询未执行右外联接

c# - 当 IDENTITY_INSERT 设置为 OFF 时,无法在表中插入标识列的显式值

围绕间隙的 SQL 分组