Scratch里没有提供精确到小数点后几位的代码块,导致在scratch里,保留小数位数时,往往会出现一大串的小数位,大概是17或18位,这完全不符合用户的需求,于是干脆“一不做二不休”,自己用自定义模块,写了一个精确小数位数的自制代码块,基本上解决了难以准确保留小数位数的“缺陷”吧。主要思路是:
一、先找出小数点的“位置”,例如小数36.8365,则小数点的位置在3,即第三个符号就是小数点;再比如,3.1415926,小数点的位置就在2。
二、接着根据实际需要精确的位数,找出前该小数的前n个数字,比如小数3.1415926,想精确到3位小数,那么在已经找到小数点位置的前提下,再加3,即2+3=5,则找出前5个数字,包括小数点在内。此时如果不需要四舍五入,那么就完成小数精确的任务。
三、如果需要“五入”,那么还得多判断保留位数的下一位是否大于4,还是上面这题,保留三位小数时,最后一位的1需要加1,因为它的下一位是5,根据“五入”的要求,1要加1变2,才能符合要求。
四、接下来的操作稍微复杂一些,要先把得到的小数变成整数,比如先把3.141扩大1000倍,变成3141,然后加1,变成3142,最后再缩小1000倍,变为3.142,最终完成“五入”。
为何不在3.141时,直接加0.001变成3.142呢?我在测试时发现,用小数直接进行数学运算时,大概率又会发生小数位变17位或18位的情况,不懂这是不是scratch的一个bug,因此后来想到的办法,就是“舍近求远”,先扩大倍数,然后加1,再缩小相应的倍数“还原”回来,如此一来,就不会出现位数变多的情况。
-
扫码下载安卓APP
-
微信扫一扫关注我们
微信扫一扫打开小程序
手Q扫一扫打开小程序
-
返回顶部
友情链接:
6547题库网 |
Scratch从入门到精通|
Copyright © 小码农 |
2020-2022
发表评论