00:00
好,同学们,现在呢,已经给大家介绍了六种flax语言的,哎,基本数据类型了,现在呢,我们介绍三种数值型的,分别是整数无符号整数和浮点数整数无符号整数啊,还有一个复减数,好。好,同学们,首先呢,我们从整数开始讲起,那么这个整数呢,呃,和这个无符号整数的区别呢,就是整数呢,它可以带正负号,可以表示负,可以表示负数。啊,那么我们flux语言里的这个整数呢,其实是由八个字节来表示。呃,那么这个呢,就是。我这个课程里面呢,不会讲这个二进制编码的问题,所以说大家呢,啊,一定要有一个呃强类型语言的编程基础啊,那么如果这个整数呢,是八个字节啊,还是有符号的,那么我们知道呢,它的一个呃取值的最大范围呢,应该是哎二的六十三次方,再减去一,哎,这是正数,最大的正数啊,那么它的这个负数呢,应该是最小的值啊,最小的值应该是负的二的六十三次方。
01:12
啊,现在呢,我们可以去试一下,这里呢,我声明一个变量啊,A等于二的。六十三次方。减一,好,把这个A呢传到我们的表里面来,点击submit。呃,可以看到呢,这里面出了一个问题说啊,这个表达式呢,不支持float减int,也就是说我们二的63次幂返回的是一个浮点数啊,那么这里呢,应该是。啊,可能它本来规定的呢,这个取值呢,就是返回浮减数啊,接下来呢,我们试一下看看二会不会有问题。好,还有这个问题说明呢,我们现在不是超范围啊,我们现在就是呃,一个它规定的返回类型的问题,呃,我们这里可以尝试一下减1.0会不会出问题啊。
02:04
呃,我点击submit。啊,可以看到他说呢,这里七带一个整数,而不是浮点数啊,那么我现在可以认为呢,它这里面是有bug啊,它这里面是有bug,呃,那么没有办法的话,我们就只能去,我们只能去这个啥了,我们只能去找计算器了,现在呢,我来计算一下二的六十三次方。再减去一个一。好,得到这么长一串数字,把它复制下来。啊,粘到我们的代码里面。好把这个抹掉,把这个逗号呢给它抹掉。好,点击提交。哎,可以看到现在这个类型呢,是一个浪类型。啊,那么这个浪类型呢,其实就对应着我们现在编程语言里面的int类型啊,就是我们现在操作的整数啊,但是现在有个问题,这里显示的是76000。
03:13
哎,可以看到我们这个数据呢,它是75807,也就是说呢,他这里好像进行了一个。取整的操作啊,好像是这个数据的精度不够。呃,那么这个地方呢,我怀疑是前端JS的问题,也就是我们这个web UI的问题。呃,现在呢,我们可以把这个CSCSV呢下载下来看一下啊。啊,这里呢,我直接打开。好,这是用Vs code打开。呃。啊,那么可以看到呢,它确实是前端的精度问题啊呃,这个返回过来的数据,真实数据呢,它最后的结尾呢,就是75807啊,但是我们这个web UI呢,可能是因为JS里的啊,这个浮点数类型的问题,导致我们现在呢显示的是76000。
04:02
啊,那么这个呢,其实是我们前端页面的一个bug啊,这个呢。啊,实在是让人有点不爽啊,不过呢,啊也无所谓啊,平时用不到那么大的值。呃,那么接下来呢,我们去做一些别的操作。好,稍等,我把这个屏呢再缩小一点,太大了。好,呃,那么现在呢,我们可以试一下啊,如果说这个呢,是我们in特类型的取值上限,我能不能再写一个零八呢?哎,可以看到我们的编辑器呢,已经开始报错了啊,说这个啊,我们现在这个类型呢。啊,取值的范围呢,已经超过了上限。可以看,可以看到这个value art of出界了。啊,会直接报错,现在呢,我点击三看一下效果。哎,可以看到呢,这个查询的直接执行失败。好,那么这呢,就是我们一个取值范围的问题啊,接下来呢,就是说各种类型呢,把它转换成整数。啊,这个呢,就没什么稀奇的了,因为在介绍前面几种类型的时候呢,啊,我们或多或少的涉及到这个函数叫做int函数。
05:06
呃,那么可以看到这搜索之后呢,可以它会把这个包含INT3个字母的这些呃函数全部搜索起来,我们需要往下呢去找一找。好,可以看到呢,有一个这个int函数啊,鼠标悬停上来。啊,那么可以看到这些布尔类型,然后包括这个持续时间的类型啊,浮点数啊,以及这个能够表示啊,Nu string就是能够表示数字的字符串,哎,时间点类型,以及这个无符号整数呢,它都可以转换成我们的整数。啊,那么这里呢,可以稍微的做一些演示啊,比如说啊,我现在弄一个变量A,然后呢,让它等于int函数括号。V啊,传这个参数啊,接下来呢,我传一个字符串啊,比如说我传一个ABC,那能不能转成整数呢?哎,可以试一下summit。
06:00
啊,可以看到呢,这一个执行呢,已经报错了,因为ABC呢,它的字面值呢,啊,字面意思呢,并不是我们的数字,哎,如果把这个ABC呢改成123啊再试一下。啊,那我可以看到呢,这个这个类型的就没有问题啊,现在显示的就是123。啊,那么这就是我们说的这个能够表示表示。Nu string的这个意思啊,就是它字面值呢,必须得是一个数字。另外呢,就是这个小数转整数的时候,哎,它并不是按照这个四舍五入的规矩去转的,比如说我这里呢,输入一个12.5,点击submit。啊,可以看到呢,这一个转弯的结果之后呢,是12。啊,那么现在呢,我再去用12.9吧。哎,可以看到转完之后呢,再点击还是12,哎,如果是这个十一二点一呢。哎,答案还是12,就是小数呢,如果直接转成整数类型呢,它其实呢,是只保留整数部位,而不考虑这个小数是多少的。
07:04
啊,那么这种保留的方式呢,我们称之为截断。啊,称之为截段啊,如果你想你想进行这个四舍五入的进行保留呢,我们有一个函数啊,叫做ma,在ma这个包里面点round round。好,那么现在呢,我们可以试一下啊,用这个run的函数呢,去做一个,哎,这个整数的保留math.ron。好点一下。啊,这里呢,需要传一个参数,可以看一下这个文档啊,那么这个参数的名字呢,叫做X,好,现在呢,我们传递一个12.5,诶点击submit。可以看到现在返回的类型呢,就是13啊,那么这里呢,需要注意一个问题,就是你可以看到。啊,我们现在的这个类型是什么呀?啊,类型不是long,它不是整数啊,这个函数返回的一个结果呢,是浮点数啊,Double是浮点数。
08:05
啊,那么说明呢,我们这个地方,哎,你如果想让做整数类型呢,啊,如果这个地方类型比较要求呢比较高,那么这里呢,还不能直接使用master.round你必须呢在外面再套一层int来为冒号,来把这个套进来,点击submit。现在才可以看到这个13的类型呢,是浪是整数。好,那么关于整数呢,最后要掌握的知识,哎,就是我们的16进制表示的问题,之前呢,我们给大家演示过he点,哎,Best方法,现在呢,要给大家演示这个int方法。好,那么现在呢,我们可以看到这里面呢,需要传一个参数啊,就是如果右边啊搜不到这个函数的话呢,你可以把鼠标悬停在这里。啊,可以看到这里的提示。哎,说missing required argument v,也就是说呢,少一个名字为V的参数,哎,此处呢,我们直接给他一个V好啊,那么这里呢,我们可以传入一个表示了16进制数字的字符串啊,那么假如现在我这里呢,写一个A。
09:10
啊,在16进制里面呢,字母A表示十的意思,那么现在呢,我在外面拿变量接一下A等于x.int呃,那么现在呢,我想知道它呢,转成十进制呢,是不是我应该在这个提交完之后呢,看到一个数字十,好,点击submit。诶可以看到,我现在看到的呢,就是数字十,哎,如果呢是A0,那就应该是160,诶点击提交看一下,好啊说明呢,这个地方操作没有问题,好,那么整数类型呢,到这里就基本讲完了,接下来呢,给大家介绍一下无符号整数,也就是U。无符号整数和整数之间的区别呢?主要是表示数据的范围不同啊,那么无符号整数呢,舍弃了符号,那么它呢,就只能表示正数。
10:00
啊,无符号整数呢,也是八个字节啊,同样是八个字节啊,但是呢,因为没有这个负数的表示呢,所以说它用来表示负数,那些编码就全部用来表示正数,因此呢,它表示的数据范围哎,是零到二的六十四次方啊,但是呢,我们之前说啊,在flax脚本里面呢,你只要敲下一个数字啊,敲下一个数字,它默认的类型呢,就是int类型。啊,那么我们怎么样去声明一个无符号整数呢?答案是通过u int函数,U int函数好可以看到这个函数呢啊,你可以传进来,呃,传进来这个V的类型啊,布尔类型呃,持续时间,然后浮点数整数啊,包括这个表示数,表示数字的字符串啊以及时间啊那么现在呢,我们可以尝试一下,比如说呢啊,我使用一个u int好V冒号传进来一个123。
11:00
啊,用变量A呢,来接一下啊,我们点击submit提交一下,好可以看到呢,我们现在这个返回的结果啊,看到看到这个类型。啊,你会发现呢,这个类型呢,不再是long了,而而是这个on long,那么这个意思呢,就是无符号整数的意思,我们可以尝试往这里传一个负数,负的123,点击萨。好,可以看到。啊,这里呢,没有显示啊,负123出现的是一个非常大的数字啊,那么这种现象呢,我们称之为出现了编码环绕啊,啊,这其实是一个正常现象啊,那么不了解这块的同学呢,可以自己去呃,学习一下二进制编码的问题啊,那么接下来呢,还有一个问题。就是我们说,哎,无符号整数的取值范围是零到二的六十四次方啊,但是你的这个有符号的这个整数呢,哎,普通的整数呢,它的最大值呢,是二的六十三次方减一啊这么一来呢,我这里面好像没有办法去敲很大的数字啊,我们之前说啊int类型,我们看下文档啊,找一下这个类型。
12:09
呃,我们之前说int类型的最大取值范围是。啊,这个九几几这个数字把它复制一下。好。啊,接下来呢,我往里面传这个值啊,点击提交啊,可以看到这个时候呢,程序还能正常运行,但是呢,我如果把这个七改成八,你会发现外面这个函数没有报错,但是里面这个数字的声明先报错了啊,因为这个数字的默认类型呢,就是我们的int类型,这个已经越界了,这时候怎么办呢?这时候的话,你想把这个5808这个数字传进来,就必须呢使用这个表示数字的字符串的方式。而使用这个方式去声明一个超过了int表示范围的无符号整数,再次点击submit。好,其实这个地方啊,我们可以看到啊,这个前端页面没有变,是因为我们之前说的这里有八个啊,现在我们把这个CSV下下来。
13:03
去看这个CSV好,可以看到这个数据呢,其实已经是哎5808了啊,已经是5808了,说明我们现在的这个,呃,声明的没有问题。啊,那么这就是我们一个无符号整数的玩法,最后呢,给大家介绍一下浮点数啊,在我们的这个flux编程语言里面呢,只要你声明的这个数字,它带一个小数点,那么它呢,就是浮点数。啊,此处呢,我用A来接一下,A等于2.0,呃,点击submit可以看到呢,这里面显示的是double,也就是我现在呢,其实已经是一个浮点数了。那么我们Fla语言里面的浮点数呢,其实是由八个字节表示的。八个字节。啊,所以说在这个对应到in Fla DB里面的数据类型呢,呃,这里写的是double,它其实呢,是双精度的意思啊,也就是两个四个字节双精度,但是呢,在我们的flux语言里面没有double这个类型啊,这个不叫double,这个浮点数呢啊,用的名字叫float啊,你可以简单理解为这两个就是命名上的区别,但实际上呢,都是一回事啊。
14:12
呃,那么接下来呢,我们再说一下,就是科学计数法的问题。在有的编程语言里面呢,你当你这个小数呢,非常大,或者说是呃,很夸张的时候呢,你可以使用科学计数法来表示这个数字,比如说1.23,哎,然后E的多少次方啊,有的编程语言呢,支持你这么直接写,但是在我们的flux不行啊,但是flux呢,又提供了一个使用科学计数法来表示浮点数的方式啊,那就是要通过符号函数f float这里呢,传递一个参数V,在此呢啊,在这个字符串里面传递字串,这个字符串里面呢,去写科学计数法的表达,比如说1.2345。然后我写上一个亿,这个亿呢,就表示十的几次方,然后呢,我写下一个正数啊正这个注意这个不是加号了啊,这个是正数啊,或者是写一个负数,我在此呢先写一个正数,然后呢表示啊十次方,好,我们现在呢,把这个数字呢,把这个变量还是用A接一下,然后放到我们的表里面,点击sum。
15:17
好,可以看到我现在其实显示的数字呢,就是1.2345的14方的一个结果。最后呢,通过这种方式,呃,我们还可以直接表示无穷大,比如说把这些都删掉,我写一个正无穷大,就是正I,大写I,小写N。小写F。啊,然后点击提交看看结果。哎,可以看到这里面呢,注意啊,这不是字符串。这里面呢,它的类型是double啊double类型,但是呢,这个值显示的是正INF,其实呢,这也就是一个正无穷大的表示,任何数呢,来跟它比较大小,结果呢都是比它小,呃,最后呢,再给大家说一个就是哎,我们在浮点数的时候呢,经常有一个问题就是哎,Not a number。
16:05
那么在有的编程语言里面呢,支持你用na啊,直接表示我们这个东西呢,不是一个数字啊,那么not a number呢,它经常发生在哪呢?那它跟none不一样啊,注意none是没有数,那么no not a number呢,长指这个计算错误啊,比如说我现在用十除以零,那么没有任何数呢,可以把零除掉,所以说呢,这个地方呢,返回的值呢,其实就是应该是na啊,Not a number。但是在我们的flash语言里面呢,不能直接去声明一个nan啊,这个字面量呢,它不支持啊,你直接敲nan呢,它报错啊,那怎么办呢?啊,还是通过float函数。我们写一个变量A,然后等于floatat,好,V冒号传入一个na。好,接下来呢,点击sum。可以看到这里面呢,其实就已经显示出了啊,这是一个note number,这不是个数字,好,这样的话,关于浮点数呢,我们也讲完了,呃,所以说本节呢,给大家讲了三个我们的数值类型,分别是整数,无符号整数和浮点数。
我来说两句