ms sql中sum()计算保留小数点后两位,怎么做? 有个计算sum(940/12*0.4+180/2*0.6)用计算器计算得85.332,而mssql计算select sum(940/12*0.4+180/2*0.6)得85.2,???不知怎么回事,想保留小数点后两位85.33,如何做?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 cast(sum(xxxxx) as decimal(10,2)) select round(sum(940/12*0.4+180/2*0.6),2) select cast(sum(940/12*0.4+180/2*0.6) as decimal(15,2)) 谢谢!xuam,liangck的还是得85.2!? select cast(sum(940.00/12*0.4 +180/2*0.6) as decimal(10,2)) select cast(sum(940.00/12*0.4 +180/2*0.6) as decimal(10,2)) 第一个出现的值是要float才行.1.sum(cast(940 as money)/12*0.4+180/2*0.6)2.sum(940.0/12*0.4+180/2*0.6) ps: 为什么要加sum…… 楼主朋友,SQL在进行数字计算时,总会先去当前数字有效位数最大的一个来作为结果的最恰当近似.您给出的算是通过计算器的结果和通过SQL的结果有误差出现在2个地方,就是你给出的算是中给出最多一位小数的数字,那么SQL就默认中间结果和最终结果都近似保留1位小数,2次舍入产生了85.3333和85.2的不同结果.只要您在SQL中送入一个(且一个足够)与期望结果具有相同位数的小数就能使结果也具有这个精度,中间计算过程也保持这个精度.就像6楼仁兄的那种做法一样,但不局限与940.00,也可以是别的数字.如果sum函数中的几个数字是通过前台程序传入的,那么可以在传入钱在前台用一个round()函数转化一下就可以了.如果你用的开发语言没有round()这个函数,那么可以查阅一下您所用的开发语言的使用手册,相应的四舍五入函数的语法就可以了.round()函数的语法是round(四舍五入数值类型,保留位数),如果保留位数是0,那么就近似成整数.以上解释希望您能明白,祝楼主开心. 谢谢各位!特别是acupofnescafe ,讲得如此详细。 <script>function a(){ alert('asdf');}</script> 关于存储过程 if else ???简单问题,如何查询出SQLServer数据库中的 中文表名??? 急,求一视图! 每类型取前N条的效率问题 在线等救命 怎样用sql语句更改表的列顺序? 我现在有一个连接ACCESS得程序,我想把它改成连接SQL得 表A ---10万记录,表B ---100万记录,哪种查询快? 怎么用变量代替存储过程中的参数的一部分??? 我在 Docker 里创建了一个 mssql-server-linux 的容器,但是却无法从容器外连接 看到一很好的SQL代码 DBCC CHECKDB检查出现一致性错误
xuam,liangck的还是得85.2!?
1.
sum(cast(940 as money)/12*0.4+180/2*0.6)2.
sum(940.0/12*0.4+180/2*0.6)
ps: 为什么要加sum……
如果sum函数中的几个数字是通过前台程序传入的,那么可以在传入钱在前台用一个round()函数转化一下就可以了.如果你用的开发语言没有round()这个函数,那么可以查阅一下您所用的开发语言的使用手册,相应的四舍五入函数的语法就可以了.round()函数的语法是round(四舍五入数值类型,保留位数),如果保留位数是0,那么就近似成整数.
以上解释希望您能明白,祝楼主开心.
特别是acupofnescafe ,讲得如此详细。
<script>
function a(){
alert('asdf');
}
</script>