范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

简单小问题,哪种方式会输出0。00?

  看完这篇文章,你将在程序员的生涯中又少走一个坑。  哪种方式会输出0.00?
  今天在认真敲代码的时候,钉钉的图标突然跳动了起来。
  肯定是哪个不长眼的同事来找我尬聊?没看到我在努力码字么?不知道我是个认真工作的人么?
  我心里如是想着。
  当我点开的时候,就更有兴趣了。
  原来是我们的组长在我们小组群里提出了个小问题。作为下午甜点?
  然后我就踊跃的发言了:第二个!
  当时没有多想,就是觉得两行代码总归比一行代码靠谱v
  那么我的猜测对不对呢?写个demo验证下  // 哪个BigDecimal对象会打印出来0.00? BigDecimal a = new BigDecimal("0").setScale(2, RoundingMode.HALF_EVEN); BigDecimal b = new BigDecimal("0"); b.setScale(2, RoundingMode.HALF_EVEN);  System.out.println("a ---> " + a); System.out.println("b ---> " + b);
  然后,结果是显而易见的,我的回答是错误的,应该是方式1,难受。
  为什么是第一种方式输出0.00!
  知道结果去推测出现结果的原因永远比不知道结果去推测结果靠谱
  那我们就来分析一下为什么?
  有两个出发点去分析  直接去看源码,看看setScale方法到底做了啥  分析这两种方式有啥不同  看源码
  果断点进setScale方法看起了源码,首先映入眼帘的是他的返回值,竟然是BigDecimal。所以这个方法返回的是原来的对象还是一个新的对象呢?带着这个疑问我继续往下看。
  这时,一行代码瞬间消除了我的疑问!原来当新设置的小数位大于原来的小数位会重新创建一个BigDecimal并返回
  越来越接近答案了,源码看完了,我们接着来分析下两种方式的不同。  两种方式有啥不同
  首先两种方式分别对应着两个临时变量a和b,再结合上面分析的源码分析一下两种方式的不同之处。  临时变量aBigDecimal a = new BigDecimal("0").setScale(2, RoundingMode.HALF_EVEN)  先是创建了"0"的BigDecimal对象,假设为A1;  然后对A1对象通过setScale方法设置小数保留位,这是产生了新的对象,假设为A2;  最后是将A2对象赋值给临时变量a。  临时变量bBigDecimal b = new BigDecimal("0"); b.setScale(2, RoundingMode.HALF_EVEN);  先是创建了"0"的BigDecimal对象,假设为B1;  然后是将B1对象赋值给临时变量b;  接着对B1对象通过setScale方法设置小数保留位,这是产生了新的对象,假设为B2;  但是临时变量b依旧指向的是B1对象,B2对象没有被任何临时变量接收。
  综上所述,实际上打印的对象是不一样的,输出0.00的原因是,临时变量指向的是设置小数点保留位数后新生成的BigDecimal对象。  结语
  虽然这是一个很简单的问题,但平时的使用中还是很容易被忽视的。而这个问题如果忽略了,可能就是一个大坑。因为既然使用了BigDecimal对象,基本上都是进行一些精度较高的运算,而精度较高的运算很可能就涉及到金钱了,如果出问题就是很大的问题。

印度将要求苹果三星小米等智能手机兼容本土导航系统NavICIT之家9月26日消息,据路透社报道,印度政府将加紧推广本土卫星导航系统,印度区域卫星导航系统(NavIC),并要求手机制造商明年起在该国销售的新设备中支持NavIC。对此,印度方C罗第二梅西第三,榜首是谁?大巴黎赢麻了四强名单,巴黎圣日耳曼占据三席,大巴黎赢麻了。多年来,C罗一直是足球运动员中的最高收入者。凭借巨额合同和超高的商业代言,世界足坛没有其他球员能追上他捞金的步伐。但是现在,新一代的天伤害过后,再无原谅阅读本文前,点击上方卡片一键关注Episode02325比起一味的教育和心灵鸡汤我更需要有人听我诉苦然后和我一起痛骂这个世界当你被爱的时候,真的不需要你做什么。人际交往的高段位热情丹麦20胜法国,也许预示着卡塔尔世界杯法国十六强对手已经敲定从欧国联小组赛第五轮法国20战胜奥地利的比赛能看出来,和6月相比,如今法国的状态得到了很好的提升。但即便如此,他们还是被丹麦双杀了。很多人拿欧国联的档次说事,认为卫冕冠军这是在保留世界上唯一的原始部落所有去过的男性都要献身神秘原始的非洲大陆,坐落着很多原始部落,他们深处丛林之中,自力更生,从不跟外界交往。(此处已添加小程序,请到今日头条客户端查看)而今天跟大家介绍非洲大陆一处历史悠久的原始部落,女人上榜!中山南朗这里入选全国乡村旅游精品线路看,伟人故里,渔歌唱晚,稻田星空。听,鸟鸣清幽,鸡鸣犬吠,蛙声蝉鸣。这是独属于乡村的浪漫。稻花香里说丰年,又是一年丰收季。在中国农民丰收节和国庆假期到来之际,文化和旅游部联合共青团卡尔达诺,索拉纳,LUNC暴跌,为什么加密今天崩溃加密市场昨天再次跳水,正在崩溃。加密总市值已回落至9240亿美元,并继续下降。比特币再次跌破19000美元大关,目前交易价格为18,913美元。以太坊继续暴跌,非常接近再次跌破1。第一次听说这个系,全国首个就在南京9月24日,记者从南京信息工程大学获悉,该校人工智能学院(未来技术学院)信息工程系更名为元宇宙工程系。记者注意到,9月23日,人工智能学院(未来技术学院)印发关于信息工程系更名为元云南元谋发现目前最早的长臂猿祖先化石9月13日,国际人类学领域经典刊物JournalofHumanEvolution刊发论文,确定云南元谋新发现的元谋小猿是迄今最早的长臂猿祖先化石。这一发现将长臂猿化石记录向前推至距利拉德37岁年薪超6000万,唐斯6年3亿,NBA长约顶薪哪些溢价明显当大家都在讨论威少在湖人最后一年高达4706万的年薪多么溢价的时候,反过来想明年休赛期当他合约到期后他也会为湖人腾出如此大的薪资空间。不过有些球队可能会因为近两个赛季与队内球员的提重返太空的183天4月16日,中国航天员王亚平在轨驻留183天后,顺利完成神舟十三号飞行任务,返回地球。近期,亚平结束疗养康复,新华社记者张扬和她约在北京航天城见面。在中国空间站生活183天是一种怎
打破质疑!恒驰5正式量产视频加载中9月16日,恒驰5在天津工厂正式量产,天津市委常委滨海新区区书记连茂君,副市长朱鹏,博世中国总裁陈玉东,供应商及经销商代表,恒驰汽车董事长肖恩总裁刘永灼常务副总裁高景深及注意!10月1日起,私家车摩托车车检有重要调整!近日,公安部市场监管总局生态环境部交通运输部四部门发布深化车检改革新措施,推出了优化私家车检验周期推进网上预约检验等一系列便民利民措施。1hr优化检验周期新措施主要有哪些调整变化?以大肚为美的部落,肚子越大享受的权利越多,瘦子会被嘲笑如果一个男人,肚子很大,那肯定很多人会说这人有钱啊,肚子这么大,一看就没少应酬喝酒。这也不知道从什么时候开始,从一个人的身材来判断一个人有没有钱了,就很离谱。但如果一个女人很胖,肚英超,诺丁汉森林新援磨合需时,富勒姆南安普顿客场往绩欠佳英超917030019诺丁汉森林富勒姆10联赛经过上周的意外中断后,本周五会上演两场英超,其中排名倒数第2的诺丁汉森林将在主场对阵富勒姆,上演升班马之间的对话。森林目前仅仅获得4分保罗加盟森林狼?美媒建议用拉塞尔做筹码,双塔可以尽情吃饼了森林狼在休赛期通过大手笔交易来了戈贝尔,不少人对这笔交易嗤之以鼻,认为森林狼吃了大亏,毕竟在这个小球时代,双塔阵容显得有些鸡肋,唐斯本身防守能力较弱,而戈贝尔的主要区域在三秒区,对CBA三消息首钢新援首秀及格,琼斯会合吉林队,吉布森告别北京大家好呀,我是北柠,各位小伙伴们要养成先赞后看的习惯哦!北京首钢队这个休赛期进行了一定的球员阵容调整,相比上个赛季来说的话,下个赛季北京首钢队中将会有更多的年轻球员出现,说实话这才广东梅州自驾游美丽景点攻略推荐梅州最好玩的景点有好多,不仅风景秀丽,空气新鲜!这个周末我们自驾游去了梅州!一梅州梅江客天下景区位于广东省梅州市梅江区东升工业园旁,占地面积2000公顷,园区由原生态的自然山峦和东机构2022年全国品牌房企品牌价值均值430。8亿元同比下降9。7北京商报讯(记者王寅浩孙永志)9月15日,由北京中指信息技术研究院中国房地产TOP10研究组主办的2022中国房地产品牌价值研究成果发布会暨第十九届中国房地产品牌发展高峰论坛在北京曝明年将有多款1英寸主摄手机发布,分别联名徕卡哈苏蔡司IT之家9月14日消息,今年7月4日,首款搭载1英寸主摄的小米12SUltra发布,该机首发索尼IMX989传感器,售价5999元起。今日,有博主称明年将会有多款搭载1英寸主摄的手黑科技成果1!OPPO公布熄屏显示控制专利,可降低设备功耗日前,企查查APP显示,OPPO广东移动通信有限公司于9月9日公布了一则新专利熄屏显示控制方法装置移动设备和计算机存储介质专利,从摘要能看到,该专利正是移动设备运行操作系统,包括第苹果15开始曝光小米轻薄新机华为Mate40Pro涨价3000元传iPhone15将采用台积电3nm芯片据报道,知情人士透露,苹果将在明年成为首家使用台积电最新芯片的公司。苹果计划在部分iPhone和Mac电脑中使用这种最新的芯片。下一代苹果A