sql 查询出的结果进行除法运算,结果无法四舍五入。求助!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 查询出的结果进行除法运算,结果无法四舍五入。求助!相关的知识,希望对你有一定的参考价值。

实际结果应该是 0.191 7位小数够了

cast 这个地方改下,要放在最外面
case(( .... *100) as decimal(38,2)) 这样你的数据类型才对
你上面的是小数保留7位,*1000没有的。类型还是不变
参考技术A 什么叫无法四舍五入?

你定义成 decimal(38,7) 了 最多当然是7位小数

可以考虑加个 round(值,2) 试试追问

d 的正确结果应该是 0.1901 7位小数够了,实际只给我保留了6位 后面的舍掉了。

实际计算结果应该是 0.191才对 7位够了啊

本回答被提问者采纳
参考技术B cast 这个地方改

cast( (你的计算字段*1000 )as decimal(38,2)) 这样才行
最后转数据类型
参考技术C as decimal(28, 1) 就保留一位小数。 参考技术D 用round也是可以的。

php中除法取整的方法(round,ceil,floor)

PHP中遇到需要将除法所得结果取整的情况时,就需要用到以下方法:

1. round:四舍五入

round() 函数对浮点数进行四舍五入。

语法:round(x, prec)

参数 描述
x 可选。规定要舍入的数字。
prec 可选。规定小数点后的位数。


说明:返回将 x 根据指定精度 prec (十进制小数点后数字的数目)进行四舍五入的结果。prec 也可以是负数或零(默认值)。

提示:PHP 默认不能正确处理类似 "12,300.2" 的字符串。

例:

技术分享
1 <?php
2 echo(round(0.60));
3 echo(round(0.50));
4 echo(round(0.49));
5 echo(round(-4.40));
6 echo(round(-4.60));
7 ?>
技术分享

输出:

1 1
2 1
3 0
4 -4
5 -5

 

2. ceil:向上取整

ceil() 函数向上舍入为最接近的整数。

语法:ceil(x)

参数 描述
x 必须。规定要舍入的数字。


说明:返回不小于 x 的下一个整数,x 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。

例:

技术分享
1 <?php
2 echo(ceil(0.60);
3 echo(ceil(0.40);
4 echo(ceil(5);
5 echo(ceil(5.1);
6 echo(ceil(-5.1);
7 echo(ceil(-5.9));
8 ?>
技术分享

输出:

技术分享
1 1
2 1
3 5
4 6
5 -5
6 -5
技术分享

 

3. floor:向下取整

floor() 函数向下舍入为最接近的整数。

语法:floor(x)

参数 描述
x 必须。规定要舍入的数字。


说明:返回不大于 x 的下一个整数,将 x 的小数部分舍去取整。floor() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。

例:

技术分享
1 <?php
2 echo(floor(0.60));
3 echo(floor(0.40));
4 echo(floor(5));
5 echo(floor(5.1));
6 echo(floor(-5.1));
7 echo(floor(-5.9))
8 ?>
技术分享

输出:

技术分享
1 0
2 0
3 5
4 5
5 -6
6 -6



以上是关于sql 查询出的结果进行除法运算,结果无法四舍五入。求助!的主要内容,如果未能解决你的问题,请参考以下文章

单片机计算器四位数的加减乘除的结果用啥数据类型

sql查询结果保留两位小数,如何做?

sql相除的问题

python查询mysql数据库,执行sql后查询结果数据类型为Decimal,解决方法

Python中整数运算除法,输出带浮点数

5 - SQL Server 2008 之 四则运算比较运算逻辑运算及字符连接运算