str函数在什么情况下四舍五入

sqlkxr 2013-01-09 10:32:41
select str(3.55,4,1)
--3.5
select str(33.55,4,1)
--33.5

select str(3.45,4,1)

--3.5

实在是搞晕了,为何前面两种不四舍五入,而后一个可以。
...全文
336 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
DBA_磊仔 2013-01-10
  • 打赏
  • 举报
回复
引用 6 楼 sqlkxr 的回复:
诸位:我似乎已经知道原因。因为str的第一个参数为浮点类型(float) 当为 3.55时 转化为浮点类型为 3.5499999999999998 保留一位小数 结果为3.5 当为 3.45时 转化为浮点类型为 3.4500000000000002 保留一位小数 结果为3.5
有那么点意思,同求
DBA_磊仔 2013-01-09
  • 打赏
  • 举报
回复
--str	(float型小数[,总长度[,小数点后保留的位数])	
select str(123.451)--返回   123(123前面有空格)
select str(123.451,3)--返回123
select str(123.451,7,3)--返回123.451
select str(123.451,7,1)--返回123.5
select str(123.451,5,3)--返回123.5
select str(123.651,2)--返回**	返回由数字转换成的字符串。返回字符数不到总长度的前面补空格,超过总长度的截断小数位。如果需要截断整数位则返回**。
																				--注意在截断时遵循四舍五入
																				--总长度。它包括小数点、符号、数字以及空格。默认值为 10。
																				--小数点后最多保留16位。默认不保留小数点后面的数字
sqlkxr 2013-01-09
  • 打赏
  • 举报
回复
诸位:我似乎已经知道原因。因为str的第一个参数为浮点类型(float) 当为 3.55时 转化为浮点类型为 3.5499999999999998 保留一位小数 结果为3.5 当为 3.45时 转化为浮点类型为 3.4500000000000002 保留一位小数 结果为3.5
sqlkxr 2013-01-09
  • 打赏
  • 举报
回复
引用 1 楼 jiangshun 的回复:
四舍六入,五成双
SELECT STR(123.45, 6, 1) --123.5 这个又怎么解释
sqlkxr 2013-01-09
  • 打赏
  • 举报
回复
引用 3 楼 ssp2009 的回复:
str是将数值类型转为指定长度的字符串,四舍五入用round
单确实有四舍五入的现象,请问这个怎么解释。
快溜 2013-01-09
  • 打赏
  • 举报
回复
str是将数值类型转为指定长度的字符串,四舍五入用round
jiangshun 2013-01-09
  • 打赏
  • 举报
回复
引用 1 楼 jiangshun 的回复:
四舍六入,五成双
又仔细看了下,好像还不是按四舍六入五成双取的! 同求解释
jiangshun 2013-01-09
  • 打赏
  • 举报
回复
四舍六入,五成双
sqlkxr 2013-01-09
  • 打赏
  • 举报
回复
楼上说的这些网上遍地都是,和回答我这个问题有啥联系。

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧