美文网首页
专家与普通老师的区别

专家与普通老师的区别

作者: 弗兰基的自由之路 | 来源:发表于2021-05-05 11:09 被阅读0次

在Python入门的课程里面,老师也讲了计算机的精度问题,但是说来说去,举了好多个例子,告诉我们编程语言里面的精确度是有默认值的,而且你还可以规定默认值。

讲的比如说Float(浮点型),另外这也让我隐约的知道了浮点型计算机名字的由来.

a = 1 / 3

float('%.3f'%a) #这里的' %.3f '表示精确到小数点后面第三位

0.333

上课的时候老师给我们讲了用float可以将计算结果按照自己的设置保留几位,然后给我们演示了好多遍,Python语言只能精确到几位,之后就不一定准确了。

但是呢,最后的原因还是没讲,很有可能就是知道,但是觉得不重要。可给我留下了印象,计算机不是还会用来计算导弹的轨迹吗?这要是精度不够岂不是“差之毫厘谬以千里”。想打到印度去,结果飞到了巴铁家里面去了。

今天在学习《自学是门手艺》(李笑来)的时候,就一下子就看到了原因,清清楚楚,明明白白。

在计算机里,所有的东西最终都要被转换成数值。又由于计算机靠的是电路,所以,最终只能处理 1 和 0,于是,最基本的数值是二进制;于是,连整数、浮点数字,都要最终转换成二进制数值。这就是为什么在所有编程语言中 1.1 + 2.2 并不是你所想象的 3.3 的原因。

[1]1.1 + 2.2

   3.3000000000000003

因为最终所有的值都要转换成二进制 —— 这时候,小数的精度就有损耗,多次浮点数字转换成二进制相互运算之后再从二进制转换为十进制之后返回的结果,精度损耗就更大了。因此,在计算机上,浮点数字的精度总有极限。有兴趣进一步可以看看关于 decimal 模块的文档。字符串也一样。一个字符串由 0 个字符或者多个字符构成,它最终也要被转换成数值,再进一步被转换成二进制数值。空字符串的值是 None,即便是这个 None —— 也最终还是要被转换成二进制的 0。

你看,就是这么简单的一句话,计算机只能处理二进制语言0101,讲其他的数据输入电脑的时候,需要将数据从其他的数据类型或者进制(比如说十进制)转换成二进制,而造成了损耗。

心里面一下子就明白了,是数据转换引起的。

看来,学习还是要找大师,看书要看好书呀!

PS:我当初想到了应该及时将这个问题抛出来呀,下次要不耻下问。


就想起了初中历史老师说的问题,清朝的时候对外贸易量增大,而中国使用的是以前自己的计量单位,比如说尺、丈等等,而外国使用的是米(当然了,米是1875年正式提出,以前的英制单位就更加的复杂了),所以一丈等于3.333333333...,这是一个无限循环小数,所以外国人做生意总会吃亏一点,扯得有点儿远了。

那么问题来了,军用计算机,以及航天计算机,还有气象计算机怎么来控制这个精度呢?是不是使用的是另外的编程语言,能够避免这种情况。当然了,我的这个想法值得考究。

另外的问题就是电脑为什么采用二进制呢?

最后,《三体》中关于位置计算刘慈欣也写了计算机二进制的问题,待会儿可以再去看看,是不是会有新的体验。


相关文章

网友评论

      本文标题:专家与普通老师的区别

      本文链接:https://www.haomeiwen.com/subject/gnskdltx.html