Java面试官问你在金融计算中使用float还是double。 不要给出错误的答案。

 2024-01-24 03:02:34  阅读 0

注:以下为老刘与采访者东风的真实对话。 如有雷同,请勿匹配。

老刘:“东风,你长期从事财务软件开发,你用什么数据类型来记录存款、金额等相关数据?”

东风:“当然是用float,这样更准确。”

老刘:“东风,你确定精度比浮点低吗?”

东风:“当然,只精确到小数点后两位,这个词不是二的意思吗?”

老刘:“东风,你右手边正好有一本《Java核心技术第一卷》,请翻到第35页看一下。”

东风:“……哦,刘经理,不用了,抱歉,我只是开个玩笑,缓解一下采访的紧张气氛。看你厚厚的眼镜下隐藏着的一双深邃的眼睛,我想你一定有很多“天赋。知识。在金融计算中,必须要用到,浮动不合适。因为单一的精度问题就会让人晕倒。”

“我记得有一次,我碰巧计算了一个表达式a - b。a的值为2,b的值为1.1。我五岁半的侄女知道答案应该是0.9,但程序计算出来的结果却是0.89999……,我当时又气又兴奋,气的是电脑不如我侄女可靠,但又兴奋,因为我第一次发现了Java的bug时间。”

“我赶紧向沉默王青铜时代群报告了这个bug,以为自己会受到大家的夸奖,结果却遭到了大佬们一致无情的嘲讽!”

”还好群主二哥及时安慰了我,他私信我说:‘首先,计算机是进行二进制运算的,我们输入的十进制数会先转成二进制,然后再转成二进制。运算后转为十进制输出。” 和浮动提供快速操作。 然而,问题在于,在转换为二进制时,有些数字无法完全转换,只能无限接近原始值,这会导致您看到不正确的结果。’”

“看到二哥的消息后,我郁闷的心情得到了很大的缓解,于是我对浮点数和小数的使用问题进行了深入的研究。”

“您可以表示任何精度的小数并对它们执行计算。但是在使用 () 构造函数时要小心,因为它可能会在计算过程中引入舍入错误。最好使用基于整数或 的构造函数创建对象。”

老刘:“哇,你回答得很好,我们看下一个问题,你应该知道程序会在2/0的时候报java.lang.错误,那么你知道2.0/0的结果吗?”

东风:“刘经理,这道题对我来说不难,结果是(英菲尼迪)。抱歉,我的英语口语能力有限,其实就是无穷大的意思。不仅是正无穷大,还有负无穷大,甚至还有是一个特殊的值,称为NaN。NaN代表'不是数字'。这些值的存在是为了当错误情况发生时,程序也可以使用特定的值来表示产生的结果。这些错误情况包括算术溢出,取负数的平方根,除以 0,就像你提到的那样。”

老刘:“东风,你的发音比我好,挺准的。”

东风:“刘经理,你笑了。”

老刘:“我还有一个关于数组的问题,请稍等,我写在纸上。”

c语言 float精度_精度在c语言中的意思_cfloat精度

“这样的数组有四个,每个数组只需要一个唯一的元素。也就是说,a、b、c、d这四个数组的元素不能相同,你要做什么?”

东风:“刘经理,我可以用一下你的灵美钢笔吗?”

老刘:“好的,请用吧。”

东风:“我粗略算了一下,我告诉你我的想法。d只能是2,b只能是4,a可以是1或3,c可以是3或1。遍历长数组,消除长数组中包含的元素 最短数组的元素 消除b中d中的2后,还剩下4 消除a中d中的2后,还剩下1、3、4 C不包含d中的元素,所以不需要消除,消除后b中还有4,d中还剩下一个4,d中还有一个2,再次迭代,消除a中的4,最后只剩下1和3留在a和c中,然后分别消除不同的数字。”

“我觉得这是一个愚蠢的做法,刘经理,你觉得可行吗?”

老刘:“可行,没问题。那么,你觉得变量和方法的命名怎么样?请放心使用。”

东风:“我曾经在博客园看到过一个有趣的投票统计——选择你认为日常工作中最困难的事情。选项大致是:”

撰写各种文件

与客户沟通

预计工作量

为变量命名

“投票结果完全出乎我的意料,排名第一的竟然是‘命名变量’!命名变量确实是软件开发中最常见的事情,但做好它确实很难,但很容易。”

“《阿里巴巴Java开发手册》‘规定’方法名、参数名、成员变量、局部变量必须使用统一风格,并且必须遵循驼峰式大小写。”

“很长一段时间,我一直在纠结到底是用拼音好还是用英文好。后来我下定决心:要么用拼音,要么用英文。只要看到名字就知道是变量还是方法。 ……只要有这个意图就足够了。”

“有时候,给一个变量起一个好名字确实很困难,这个时候我就会选择一个省时省力又省心的方法——给变量名命名一个类型名。例如:”

“最好将变量声明在靠近第一次使用的地方。否则,由于人眼接受的屏幕高度有限,代码将难以阅读。”

老刘:“东风,你很好,恭喜你,面试通过了,你回去准备一下吧,下周一就可以来上班了。”

再次说明:以上是老刘与面试官东风的真实对话。 如有雷同,请勿匹配。

标签: 变量 数组 剔除

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码