知识整理--工作中遇到的有趣问题

本文探讨了Java中处理double和float类型的精度问题,并介绍了如何使用BigDecimal类解决该问题。此外,还讨论了Oracle数据库中GROUP BY的正确用法,包括其限制和注意事项。

1、数字运算问题

Java中对double/float类型的数据进行计算时,存在精度问题,如a=5.3,b=5,计算出的a-b不等于0.3,原因是double数据类型在内存中的表示方式并不一定是精确的,经过运算后,得到的结果并不是表示0.3,而是近似于0.3的小数。计算时,使用BigDecimal类的对象来进行运算可保证精度,同时必须注意要使用new BigDecimal(String s)的方式构建对象,因为只有这样创建出来的对象才是精确表示字符串s指定的数值。

 2、oracle数据库的分组函数

使用了分组函数group by后,不能出现分组条件之外的字段,sql语句:select 字段1,字段2,..., from... where ...  group by ...,字段1,2...中没有聚合函数即没有count/sum/min等函数,必须在group by的字段中包含,如:

select p1,p2,count(p3) from table where p1='XXX' group by p1,p2,如果group by中只有p1,则会提示不是group by表达式,或者提示不是单分组函数;

举例:

 select payment_bill_no,pay_time from mems_payment_bill group by pay_time;--ORA-00979: 不是 GROUP BY 表达式
 select payment_bill_no,count(*) from mems_payment_bill  group by payment_bill_no;--ok

3、IE11浏览器下,JavaScript判断浏览器版本类型

var userAgent = navigator.userAgent;

var isIE11 = userAgent.indexOf("rv:11.0) >-1;

var isEdge = userAgent.indexOf("Edge")>-1;

var isOpera = userAgent.indexOf("Opera")>-1;

//取得IE的版本号:

var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
reIE.test(userAgent);
var IEVersion = parseFloat(RegExp["$1"]);

转载于:https://www.cnblogs.com/haizhimang/p/8493677.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值