浮点数的0不是0,怀疑人生了
目录
1、老师告诉我分母不能是0。
2、switch 为什么一定要加break?
3、Java8 的stream 和 limit
记录最近遇到的一些坑点,分享给常在河边走的你。
1、老师告诉我分母不能是0。
场景:项目有个功能是竞猜功能,竞猜需要的金币是根据公式:
M+ N*0.5/ diffDays。M是根据玩家等级策划配置的值,N是某一天到当前时间的收入总和,diffDays 是收入的天数。
在测试的时候,测试的同学发现在玩家有14亿的金币仍然不能竞猜,这很奇怪。经过调试发现diffDays 为0,为什么除0不报错呐?老师告诉我的不对吗?
难受。
原因:double类型数据直接除0,0会向上转型为double,变为0.0,0.0在内存不是0,而是一个不精确的数,可能是0.000000000001或其它,所以一个正数除以0.0结果就得很大很大。所以返回了Long的最大值。
2、switch 为什么一定要加break?
场景:在写一个gm命令的时候将一个功能的gm全部定义进了一个协议内,通过case 进行区分操作,想当然的一位 {} 就是语句的结束,出现了多个case同时执行的情况。代码如下
探索一下为什么?想要知道为什么一切还要从源头说起:字节码
可以看到switch case 被编译成Lookupswitch ,两个case 被编译为L2,L3 ,并且自动添加了default L4。
接下来看下加入break 会做什么?
加入break 之后,在L2 之后补上了L5,GOTO L4 ,L4 直接执行了18行,也就是程序的结束,不再执行下面的case。
除了Lookupswitch 还有 tableswitch ,具体的区别 你知道吗?下期再说哦。
3、Java8 的stream 和 limit
场景:最近有个功能是记录竞技场的前三名的玩家信息,但是只保留近5个赛季的,多余的则删除。写出了以下的代码:
运行的结果是:
妈耶:完全不是我设想的5个赛季,蛋疼。分析下原因:Java8 的写了不少了,但是有些函数还是有些想当然了。因为这个集合里有season 有多个数据,在最后进行limit 的时候取5个,最终只取到了8和9,怎么解决呐?解决重复数据当然用distinct。
总结:搬砖不易,还是需要注意细节。你遇到过哪些坑,可以留言分享,记得点赞分享。
1.浮点数的0 不是0,2.switch不能忘记break,3.limit 是在所有数据中进行筛选。
浮点数的0不是0,怀疑人生了相关推荐
- 浮点数除0和余0、定义
面试遇到的浮点数除0和余0.定义的选择题,小结一下 首先看代码 double a = 9.1; double b = 0.0; double e = 5.0; double e2 = 5; doubl ...
- 从0.1加0.2不等于0.3谈Python浮点数的前世今生
文章目录 1. 0.1加0.2不等于0.3? 2. 为什么要使用浮点数? 3. 浮点数的二进制和十进制是怎样转换的? 4. 如何实现0.1加0.2等于0.3? 1. 0.1加0.2不等于0.3? 什么 ...
- 整数运算和浮点数运算中除数为0的区别
整数运算和浮点数运算中除数为0的区别: 整数中除数为0:int d4 = 1 / 0: 报错:Exception in thread "main" java.lang.Arit ...
- 刚刚用华为鸿蒙跑了个“hello world”!跑通后,我特么开始怀疑人生....
作者:一个俗人 来源:https://my.oschina.net/u/169565/blog/4557279 本文仅作学术分享 最近华为鸿蒙OS 2.0正式开源!关于鸿蒙的教程其实网上也已经有一些尝 ...
- Access denied for user(这个几乎让我怀疑人生的异常)
昨天一时兴起,打算根据自己的某些想法,业余时间写一个简单的项目,用以巩固那些重要的知识,以及练手一些即将学习的技术. 然而才一开始,便有一盆冷水迎面而来,在搭建整个框架环境的时候竟然就被卡住了!主要是 ...
- 菜鸟第一次挑战apk逆向,结果整得怀疑人生,终于知道android apk加密的重要性...
最近准备从x86上转移到linux上, 于是乎弄了个手游来玩, 正巧朋友推荐了一个修改软件,类似于八门神器.CE,用于搜索修改游戏数据,于是抱着好奇的心理初步研究了下该软件的原理: 研究了下软件, 搜 ...
- 程序员们,曾经是否有个bug让你开始怀疑人生
点击上方"程序员大咖",选择"置顶公众号" 关键时刻,第一时间送达! 来源:Android开发中文站 https://mp.weixin.qq.com/s/d4 ...
- 985毕业工作一年,腾讯试水一面连环50问,瞬间表示怀疑人生了.
背景 985毕业至今刚好一年,我曾做过两三个月的测试感觉不是很合适,后面选择从事后端开发,还挺香.现在已经进入秋招的提前批了,想着去大厂试试水,就去了腾讯,整个一面下来我整个人都傻了,表示怀疑人生.. ...
- Bugku-杂项-怀疑人生;红绿灯
怀疑人生 看见这种东西,直接fore most得到隐藏文件 然后打开之后发现一个压缩文件,发现有密码,直接用字典破解 没想到居然是password,直接解压,得到一个txt文件 里面是一段base64 ...
最新文章
- Several ports (8005, 80, 8009) required by Tomcat v6.0 Server at localhost are already in use
- VLC播放器如何录制rtsp流生成视频文件?
- 表情转html,PHP转换emoji表情为HTML字符实体
- Failed to get response from /vue-cli-version-marker
- 黑暗的富士康服务器被黑厂商用户名密码被泄
- 电脑网络基础知识:ipconfig/all命令及nslookupDns查询命令
- 大端模式 小端模式学习笔记
- 现网问题排查实战:Jstat,Jstack,Jmap
- Javascript特效:获取选中内容分享至微博
- python计算矩阵的散度_数据集相似度度量之KLJS散度
- 在原有产品的基础上建立软件产品线的方式
- 为macbook双系统的windows装驱动
- [论文笔记] Google Spanner Distributed Database
- 虚幻浏览器插件 加载透明网页
- 哪些期货公司开户手续费更低?
- 用AI玩55款经典游戏是什么体验?
- 遇到jQuery 中的 slideUp ,slideToggle和 slideDown 动画重复执行
- 常见面试问题总结目录
- 线性布局html,线性布局中的layout_weight属性
- Python+Vue计算机毕业设计高考填报志愿综合参考系统1kc8i(源码+程序+LW+部署)
热门文章
- Classifying Relations via Long Short Term Memory Networks along Shortest Dependency Paths
- ICTCLAS2013(NLPIR汉语分词系统) Java版本的使用方法
- 吴用问道 flash软件
- Unity如何接入本地推送 Mobile Notifications
- tensorflow1.X版本中打印训练好模型各个节点名,并保存在txt,根据输入输出节点保存‘.pb’文件
- “蓝桥杯”练习系统——历届试题
- linux bugfree安装教程,Linux系统下安装bugfree操作方法
- 美国计算机试题,USACO美国计算机竞赛
- 2-2 SPU和SKU详解及MyBatisPlus自动生成
- 采用QT进行OpenGL开发(二)绘制立方体