decimal保留⼩数点后三位不进⾏四舍五⼊_还不会⽤SQL对数
值结果进⾏格式化?
在最近的项⽬开发中,有个业务需求是界⾯显⽰的数字需要保留两位⼩数,⽬前我想到的解决⽅法有两种:(1)在写SQL的时候,直接保留两位⼩数(2)在java代码⾥⾯将查询出来的数进⾏格式化处理,保留两位⼩数先说第⼀种⽅案:在SQL中的处理我使⽤的oracle数据库,所以有3个函数可以选择,分别是:(1)ROUND(A/B,2)ROUND()函数是会将计算结果进⾏四舍五⼊的,如果所需要的值需要进⾏四舍五⼊,就可以选择这个函数,可以有⼀个参数,也可以有两个参数;如果有两个param,第⼀个是你的计算表达式,第⼆个是需要保留的⼩数位数。例⼦如下:
(2)TRUNC(A/B,2)TRUNC()函数是不会将计算结果进⾏四舍五⼊的,如果所需要的值不需要进⾏四舍五⼊,就可以选择这个函数,可以有⼀个参数,也可以有两个参数;如果有两个param,第⼀个是你的计算表达式,第⼆个是需要保留的⼩数位数。例⼦如下:
oracle四舍五入3)TO_CHAR(A/B,‘FM99990.99’)TO_CHAR()是⼀个格式化函数,第⼀个参数是计算表达式,第⼆个参数是指定格式化的格式,如果保留两位⼩数则⼩数点后写两个99,这⾥的数字9代表的数字,也是⼀个占位符,表⽰该位置上以后会是⼀个数字,为什么⼩数点前⾯会是⼀个0,⽽不是9,是因为如果计算结果⼩于1,那么只会显⽰⼩数点和⼩数点之后的部分,前⾯的0会忽略掉
在SQL计算中,⽐如1/10的结果是0.1,但是实际需要得到的结果是0.10,那么⽤我上⾯的那些⽅法得
到的结果只可以是0.1,不可以是0.10,对于这个问题,我去oracle官⽹的⽂档查看了⼀下,可以采⽤如下的写法得到:
select to_char(a/b,'FM9990.00') AS result  from dual;
这⾥就是需要注意的⼀点就是0和9的区别,具体我没到相关的信息,暂时说⼀下我的想法,0和9应该都是类似于占位符,你实际除得的结果中的数字⼀般会替换掉9,但是当你整数部分只有⼀位且是0的时候,那么你需要在格式化的时候⽤0来指定格式化的模型,如上⽂那个.67的样⼦,⼩数点后⾯的值,你可以⽤0也可以⽤9来指定模式,⽤9指定的结果就是你的⼩数点本来后⾯⼏位它就显⽰⼏位,如果⽤0来指代,它在位数不够的情况下会⽤0去进⾏占位填充。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。