1.效果展示
下面的代码是在控制台用nodejs直接运行js文件得到的:
上面这张图取正数的不足近似值和负数的过剩近似值时是有一点问题的,因为当时我还没加上区分正负数的逻辑,不过后面的代码已经修复了这个问题,等有空我再更新这张图吧,大家先凑合着看,思路应该是没错的。
2.需求分析
当我们在处理一些图表数据时候,有时候需要根据已知数据中的最大值和最小值来确定图表刻度区间。但是当数据精度特别高时,例如最大值是123.5464,最小值是-48.23145,此时为了最大刻度和最小刻度都呈现出一个近似的整数,例如130和-50,则需要分别对最大值和最小值来取近似值。
那么取近似值这个东西要怎么做呢?其实取近似值也很简单,首先我们要明确几个概念:
- 有效数字:有效数字指的就是一个数从左第一个非0数字起到末尾的所有数字,例如00123.40,有效数字就是123.40,取近似值时我们采用近似到左数第几位有效数字的方式进行求解。
- 过剩近似值和不足近似值,例如123,精确到第1位有效数字的过剩近似值是200,不足近似值是100,精确到第2位有效数字的过剩近似值是130,不足近似值是120.
- 位权,一个数中某一个位上的数字1代表的大小称为这个位的位权,例如1234中,左数第2位’2’所在位的位权就是100.
懂了这些概念之后,我们来简单看一下,把一个数字123.5464取近似到左数第2位有效数字的过程是怎么样的:
- 第1步:将数字转化为字符串,得到"123.5464"
- 第2步:循环将第二位有效数字后的值替换为0,得到"120.0000",转为数字120.
- 第3步:得到第二位有效数字所在位的权值,即10,
- 第4步:过剩近似值等于120+10,不足近似值等于120.
3.代码讲解
上面我们知道了求解近似值的步骤,因为