返回第十一章 对赌(1 / 1)任煦之秋首页

关灯 护眼     字体:

上一章 目录 下一章

「算了算了,老爹我也不跟你多做争辩,事实胜于雄辩。接下来老爹我亲自写代码给你看看,程序的结果到底是什么。如果我错了,我答应你一个条件。」

老爹扬了扬眉毛说道。

「那要是我错了会付出什么样的代价?先说了,要钱没有,有也不给!」

我立马明确地表明态度,毕竟老爹惦记我的存下来的压岁钱不是一天两天了。

「你个小财迷,你和你姑姑一样,怕都是属貔貅的吧?放心,你老爹再穷困潦倒也不可能打你压岁钱的注意。」

老爹一脸无奈道。

「才怪!不行,必须得说清楚,要不然咱们立个字据!你跟姑姑都是打赌说话不算话的人,上次姑姑和我打赌输了100块钱,到现在她都没有给我,而且还不承认。」

我满脸气愤地说道。

「诶……诶……诶……说清楚,谁说话不算话了?你老爹我以前跟你打赌哪次没有兑现?还有,你居然想从你姑姑那儿拿钱,都不知道说你什么好。哈哈,你姑姑欠你老爹三次赌约金,共计一百一十块零两毛钱到现在都没有给呢!」

老爹大声地笑着说道。

「哦,对了,忘了告诉你。你姑姑还欠你爷爷一大笔赌约金,累计差不多有好几万了吧,不过你爷爷至今尚未看到一个子儿。」

老爹又补充说道。

「嗯,我刚刚回想了一下,好像以往跟你打赌都是我输了……以后我再也不和姑姑打赌了,不然就要立字据。

唉,你说这人与人最基本的信任都到哪儿去了?这是人心的扭曲,还是道德的沦丧……」

我感叹了一声说道。

「哈哈,你个小丫头片子在哪儿学到这些乱七八糟的词语的?」

老爹笑骂道。

「任煦秋同志,你给我严肃点!别净给我整那些没用的,赶紧告诉我,你有什么条件!」

我板起脸,一脸严肃地说道。

老爹看我严肃认真的样子先是一愣,而后怒极反笑道:「任灵玥,你是要翻天了么?竟敢直呼你老爹的姓名!」

「哪个叫你左右而言其他,一直不说条件是什么嘛~」

「其实也没什么,如果你输了,从明天开始你就得跟着奶奶学习收拾自己的房间,整理衣柜。」

在我的撒娇卖萌之下,老爹怒容渐敛。让我没想到的是,老爹会提出这样的对赌条件,原以为他会打我压岁钱的注意。

其实老爹完全可以以要求的形式让我做这些,虽然一开始我可能会有些许抵触情绪,但最后还是会接受。

这大概就是老爹和其他小伙伴的爹之间最为不同的地方吧。

「原来就这个呀,行,成交!」

我欣然接受道。

接下来,老爹向我完美展示什么叫天下武功,唯快不破。

虽然只有寥寥8行代码,共计一百九十三个字符,老爹从写代码到打开小黑屏,编译,最后再运行,所有的时间加起来没有超过两分钟!

看着小黑屏中显示的y=3.500000这段字符时,我心里没有丝毫惊讶。其实在老爹跟我说的时候我已经信了八分,剩下的两分并非是因为对老爹有所怀疑。

相反,我在主观意识上非常愿意相信老爹,因为从我记事以来,老爹从来没有骗过我。

但是老爹对我说过,对待一切都要有怀疑精神,一向便是如此的那并不代表就是对的。

所以剩下的两分便是来源于此,除此之外还多少包含一些不甘心,如果没有见到结果我真的不甘心推翻自己确信的答案。

既然正确的答案和我给出的不一样,接下来重点就应该是解决一个问题——why?

「在写程序的时候往往会用到很多数学相关的知识,甚至很多书上说数学作为程序员的基本素质之一。但是,这并不意味着写程序完全就是数学问题。

小数的精度损失就是最好的例子,在数学上能够精确表达的有限循环小数在程序中可能不能准确记录。」

老爹的这句话可谓是当头棒喝,让我内心剧震。因为我完全将程序当成了数学问题在处理!

「好了,我来跟你讲一遍这题为什么是这个答案,可要听仔细了。

首先,对于小数类型的数据,如long double、double、float三种类型的变量,无论你给它赋的值有没有小数,计算机在保存的时候默认会添加六位小数,如果不足位就添零。

题目中已经明确说明了y是double类型的变量,这是为什么在B答案3和D答案选3.000000两个选项中选择D的原因。

那么接下来说说结果为什么是3而不是3.5。

还记得昨天我跟你说过,计算机其实很笨,它只会忠实地执行我们给它下达的指令么?」

「记得。」

我点了点头。

「嗯,其实这一点在这道题上得到了充分的展现。

计算机真的很笨,所以我们在下达指令的时候一定不能让它感到迷惑,否则程序必定出错!这一点一定要记住!

计算机在对数据进行数学运算的时候,整数和小数是严格分开的。如果表达式中的变量全部都是整数,那么计算机就进行整数计算,得到的结果也是整数。这就意味着在进行整数除法的时候如果产生了小数,小数部分会被丢弃掉!

比如说1/4,在数学上等于0.25,但在程序中则等于0。」

「哦,我知道了!这道题的结果之所以是3,是因为在计算3/2的时候得到的结果是1!」

我恍然大悟道。

「absolutely!」

「原来如此,那如果我想得到正确的答案怎么办?」

「如果想要正确地保存运算结果为小数需要保证两个条件:第一是接收运算结果的变量必须是小数类型,第二是表达式中有小数出现。

刚刚跟你说了,计算机在进行数学运算的时候整数和小数是分开。但是当计算机发现计算的表达式中包含了小数,它就会自动将所有的变量转换为小数来计算。就拿这道题来说,如果把被除数修改成3.0或者把除数修改成2.0就能得到和数学上相等的答案了。」

按照老爹所说,还真的得到了正确的答案。

「老爹啊,按照你所说的,计算机发现了表达式里边有小数,就会把所有变量转换为小数进行运算。可是变量a已经是double型的了,计算机应该把被除数和除数转换为小数计算,就应该得到正确的结果了啊。可是……」

我疑惑道。

「嘿嘿,你偷换概念了哦。我说的是变量而不是表达式,而3/2是个表达式!虽然a是个double型变量,然而计算机在计算的时候只会把3/2的计算结果转换为小数,但是在这个时候小数位已经被丢弃了。所以我说计算机真的很笨,就是这个原因了。」

『加入书签,方便阅读』

上一章 目录 下一章