Oraclenumber类型查询精度丢失的解决⽅法
oracle四舍五入Oracle number类型查询时,有时候会遇到精度丢失的问题,下⾯为您介绍了⼀个解决Oracle number类型查询精度丢失的⽅法,供您参考。
⼀、Oracle number类型查询需求中要求查到⼀个字段的值然后保持⼩数点后2位//如果采⽤如下⽅法从ResultSet得到⼀个数字,⽽这个数字⼤于40000,则得到的数据将不准确
floatzcxxhj+=Float(3);
//⽽如果采⽤double就没有问题
doublezcxxhj+=Double(3);
//四舍五⼊⼩数点后2位
list.add(newBigDecimal(zcxxhj).setScale(2,BigDecimal.ROUND_HALF_UP));
⼆,如果Oracle number类型查询要求从数据库查出来的数保持到⼩数点后2位,然后直接再前台展⽰那么我们可以采⽤如下查询⽅法:例⼦:
selectfpdm, fphm, fkdw, to_char(kprq,'yyyy-mm-dd'), to_char(xxhj,'FM9999999999990.00'), Decode(fpzt,'1','正票','2','红票','3','废票') fromwskp_fpkj_zbxx_111000861071 where11=1 andnsrsbh='110999999999999'
其中的xxhj是number类型,我们可以将其通过 to_char(xxhj, 'FM990.00'),保持⼩树点后最少2位,⼩数点前⾯做多3位,最少1位;⼜如
to_char(xxhj, 'FM9990.0099'),就是保持⼩数点后最少2位,最多4位,⼩数点前⾯做多4位,最少1位三、如果要求查到的数相加后保持⼩树点后2位
Double(3)+Double(4); BigDecimalbigDecimal=newBigDecimal(d).setScale(2,BigDecimal.ROUND_HALF_UP); beanData.String());

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