有些时候,我们需要四舍五入一个多位小数到指定的位,但scratch并没有这个积木,怎么做呢?我来教你~
我们创建一个函数,需要时调用就行了~
如图,创建一个带参函数,勾选"运行时不刷新屏幕":
注:勾选"运行时不刷新屏幕"
我们再创建两个变量,分别命名为"返回值"、"临时数据",分别用于返回值以及存储临时数据
在这个函数调用时,"返回值"变量应该是空的,所以初始化一下:
重要分析了
分析:要四舍五入一个多位小数并将它保留到指定的位
我们可以举几个例子,找出规律:
11.4554保留两位小数是11.46;114.514保留两位小数是114.51;1145.14保留一位小数是1145.1······
通过以上的举例,我门不难发现——这些小数保留的结果看的是要保留的位数的下一位,如果这一位>4则朝前进1,否则舍去,也就是四舍五入。那么怎么用程序做出这种效果呢?scratch原版只能支持【小数四舍五入保留到整数】的判断。
可如果将这个小数乘以一个数值变成另一个小数(或整数),四舍五入后再除以这个数不就行了?问题又来了,是乘以几呢?
我们设这个小数是一个变量(number),需要四舍五入它到第(x)位,将(number)设为随意的一个小数,再将(x)也设为一个随意的正整数,我这里设的(number)是11.4514,设的(x)是3,要将它四舍五入到第3位,通过之前讲的原理,应当是先将这个数与100相乘,四舍五入后再除以100,那这个相乘的数与3有什么关系呢?
不难发现,这个数是10的3次方(10^3),我们通过这个例子,知道了应该将(number)乘以多少了——10的x次方(10^x)。那怎么计算呢?我们从"运算"中找到"绝对值()",点击小三角,找到"10^()",再将之前我们创建的参数(x)拖进去就行啦~
知道了这个"公式",我们继续在这个函数下方编程,首先将(number)*10^(x),并将得到的值四舍五入,保存到(临时数据)中;接着,按照我们之前的思路,还要除以一个数,得到返回值,这个数其实也就是10的x次方(10^x),我们可以这么做:将(返回值)变量设为(临时数据)除以(10^x)。如图:
其实,如果x的值为负数/小数(也就是不为正整数)时,返回值就会出错!
我们加个判断,优化下代码:
拼接:
OK,如上,就是我们今天的全部代码~