AS3 数字取整方法
int()去掉小数点
trace(int(3.14)); //输出3
trace(int(-3.14)); //输出-3
Math.round()方法:
Math.round()可以四舍五入对数字取整
trace(Math.round(39.88)); //输出40
trace(Math.round(58.33)); //输出58
Math.floor()方法:
Math.floor()可以向下取整
trace(Math.floor(39.88)); //输出39
trace(Math.floor(58.33)); //输出58
Math.ceil()方法:
Math.ceil()可以向上取整
trace(Math.ceil(39.88)); //输出40
trace(Math.ceil(58.33)); //输出59
toFixed()方法:
toFixed()方法四舍五入取指定位数的小数点,当其中参数为0时表示不留小数点
var temp:Number=3.1415926
//toFixed()中的参数就是需要取的小数位数,0表示不留小数点
var temp:Number=3.1415926
trace(temp.toFixed(2)); //输出3.14
trace(temp.toFixed(0)); //输出3
temp=18.888;
trace(temp.toFixed(0)); //输出19
==============================
Math.round()方法取小数位数:
比如说3.14159要精确到.001位,则先3.14159/.001,然后再Math.round(3.14159/.001),最后在把结果乘以需要精确的位数Math.round(3.14159/.001)*.001
trace(Math.round(3.14159/.001)*.001); //输出3.142
trace(Math.round(3.14159/.01)*.01); //输出3.14
如果不想四舍五入,那直接改round()方法为floor()或者ceil()方法即可
toFixed()方法取小数位数:
直接指定toFixed()中的参数即可,比如要留两位小数,则toFixed(2)
var temp:Number=3.1415926
trace(temp.toFixed(1)); //输出3.1
temp=18.888;

===========================================

无论刚入门的还是有一定AS3编程基础的,对Math类应该都不陌生了,但Math类的性能又知多少呢?请看下文吧。
1、Math.floor()
通俗的讲这是一个取整函数。
其实官方解释是
返回由参数 val 指定的数字或表达式的下限值。 下限值是小于等于指定数字或表达式的最接近的整数。
性能测试:

 var num:Number = Math.PI;
var length:int = 10000000;
var time:int = getTimer();
for(var i:int = 0; i < length; i ++){
Math.floor(num);
}
trace(getTimer() - time);
// 结果:1865
var num:Number = Math.PI;
var length:int = 10000000;
var time:int = getTimer();
for(var i:int = 0; i < length; i ++){
int(num);
}
trace(getTimer() - time);
// 结果:69

  

结果很明显,int比floor快,可能大家就要说了,那Adobe傻X写个这样接口干什么?其实这就是我想说的对于floor的使用误区。
仔细看官方解释,其实floor不是一个真正我们所理解的取整函数,他是去找最接近自己,且比自己小或者等于的整数,那这是什么意思呢?
var num:Number = - Math.PI;
trace(int(num));
trace(Math.floor(num));
// 结果1:-3
// 结果2:-4
这个例子很明确表示,当目标数字是负数时,int和floor所得出的结果不一样。
int()的官方解释
将给定数字值转换成整数值。 从小数点处截断十进制值。
相信看到这,你已经很明白了。
但是实际上,如果你这样去使用int(),跟floor输出的结果相同:

var num:Number = - Math.PI;
var length:int = 10000000;
var time:int = getTimer();
for(var i:int = 0; i < length; i ++){
if(num < 0){
int(num) - 1;
}else{
int(num);
}
}
trace(getTimer() - time);
// 结果:132

==================================================================== 

2、Math.pow()
对于这个方法,我也不知道说什么好了,先看性能测试吧:
var a:int = 3;
var b:int = 4;
var c:int = 5;
var length:int = 10000000;
var time:int = getTimer();
for(var i:int = 0; i < length; i ++){
c * c == a * a + b * b;
}
trace(getTimer() - time);
// 结果:95
var a:int = 3;
var b:int = 4;
var c:int = 5;
var length:int = 10000000;
var time:int = getTimer();
for(var i:int = 0; i < length; i ++){
Math.pow(c,2) == Math.pow(a,2) + Math.pow(b,2);
}
trace(getTimer() - time);
// 结果:7999
勾三股四弦五大家应该比较多,但是用"*"乘法运算和pow的性能比较那是非常明显啊。
难道大家又想说Adobe傻逼了?这儿我为它平反吧。
var num:Number = Math.PI;
var length:int = 10000000;
var time:int = getTimer();
for(var i:int = 0; i < length; i ++){
Math.pow(num,10000);
}
trace(getTimer() - time);
// 结果:6682
先不说"*"乘法运算比pow快,就上面这段你能把它换算成使用"*"乘法运算吗?
而且pow其实是可以这样用的:(数学学得好都知道开方其实是可以转换成乘方来算的)
trace(Math.pow(27,1/3));
trace(Math.pow(256,1/4));
trace(Math.pow(3125,1/5));
而开方函数Adobe只提供了sqrt一个开平方根的接口(经测试Math.sqrt(9)比Math.pow(9,1/2)快,但开立方等就得靠pow了)。

================================================

3、Math.round()
这个方法跟floor一样的,先看性能测试:
var num:int = Math.PI;
var length:int = 10000000;
var time:int = getTimer();
for(var i:int = 0; i < length; i ++){
Math.round(num);
}
trace(getTimer() - time);
// 结果:1931
var num:int = Math.PI;
var length:int = 10000000;
var time:int = getTimer();
for(var i:int = 0; i < length; i ++){
int(num + 0.5)
}
trace(getTimer() - time);
// 结果:68
四舍五入其实加个0.5在取整,这样也是可以的,只不过用这个算法,存在跟第一个同样的问题,当目标数值为负时,两种方式结果不一样,需要加个判断,目标数值为负就把结果-1。

 

AS3数字取整的更多相关文章

  1. 你可能不知道的 JavaScript 中数字取整

    网上方法很多,标题党一下,勿拍 ^_^!实际开发过程中经常遇到数字取整问题,所以这篇文章收集了一些方法,以备查询. 常用的直接取整方法 直接取整就是舍去小数部分. 1.parseInt() parse ...

  2. JavaScript 系列--JavaScript一些奇淫技巧的实现方法(三)数字取整,数组求和

    一.前言 简短的sleep函数,获取时间戳:https://www.mwcxs.top/page/746.html 数字格式化 1234567890 --> 1,234,567,890:argr ...

  3. python中的数字取整(ceil,floor,round)概念和用法

    python中的数学运算函数(ceil,floor,round)的主要任务是截掉小数以后的位数.总体来说 就是取整用的.只是三者之间有微妙的区别:   floor() :把数字变小 ceil() : ...

  4. javascript高逼格代码实现数组去重,JSON深度拷贝,匿名函数自执行,数字取整等

    1.如何装逼用代码骂别人傻逼 (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]] 2.如何优雅的用代 ...

  5. js玩转数字----取整,四舍五入,数字字符串转换

    取整: 向下取整Math.floor(),向上取整Math.ceil(),四舍五入Math.round()),保留有效数位n.toFixed(),产生大于等于0小于1的随机数Math.random() ...

  6. Oracle的取整和四舍五入函数——floor,round,ceil,trunc使用说明

    Oracle的取整和四舍五入函数——floor,round,ceil,trunc使用说明 FLOOR——对给定的数字取整数位SQL> select floor(2345.67) from dua ...

  7. 问题:oracle floor;结果:Oracle的取整和四舍五入函数——floor,round,ceil,trunc使用说明

    Oracle的取整和四舍五入函数——floor,round,ceil,trunc使用说明 (2011-04-06 16:10:35) 转载▼ 标签: 谈 分类: 渐行渐远 FLOOR——对给定的数字取 ...

  8. js 为何范围内随机取整要用floor,而不是ceil或者round呢

     壹 ❀ 引 我在如何使用js取任意范围内随机整数这篇博客中,列举并分析了取[n,m)与[n,m]范围内整数的通用方法,并在文章结果留了一个疑问:为什么通用方法中取整操作,我们使用Math.floor ...

  9. JS 将数值取整为10的倍数

    问题描述: 将数值处理为 10 的倍数,并支持向上或者向下取整 如将 2345 可以处理为 2300 | 2400 | 3000 | 2000 解决方案: /** * 将数字取整为10的倍数 * @p ...

随机推荐

  1. 用Xpath选择器解析网页(lxml)

    在<爬虫基础以及一个简单的实例>一文中,我们使用了正则表达式来解析爬取的网页.但是正则表达式有些繁琐,使用起来不是那么方便.这次我们试一下用Xpath选择器来解析网页. 首先,什么是XPa ...

  2. c++ 题解

    43题 #include <random> #include <iostream> int main() { ][] = { {,,,}, {,,,}, {,,,}}; ; n ...

  3. C博客作业

    1.你对网络专业或者计算机专业了解是怎样? 信息化是国企的一个大趋势,目前正是红火的时候. - 网络是信息化必不可少的的基础和平台,随着信息化的进步,网络也必将水涨船高. - 我认为网络方向主要学的是 ...

  4. solr(一) 单节点安装部署

    一.solr简介 1.什么是solr? Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件 ...

  5. [内网渗透]Cobaltstrike指令大全

    0x01 安装 Cobaltstrike是需要java环境才能运行的 linux下终端运行: sudo apt-get install openjdk-8-jdk windows下: 百度一堆配置JA ...

  6. fluent meshing建立周期性网格

    原视频下载地址:https://pan.baidu.com/s/1pKUXKgz 密码: 6pwh

  7. 微信小程序之确认框实现

    效果图如下: 核心代码如下: delType:function(e){ var typeId = e.currentTarget.dataset['id']; console.log("de ...

  8. IntelliJ IDEA 2018.2,WebStorm 2018.2破解

    一.IntelliJ IDEA 2018.2.4破解: 可参考:https://www.cnblogs.com/iathanasy/p/9469280.html 二.WebStorm 2018.2.4 ...

  9. 000 list与map的foreach使用

    一:list的使用 1.程序 package com.jun.it.java8; import java.util.ArrayList; import java.util.List; public c ...

  10. (九)Knockout 进一步技术

    加载和保存 JSON 数据 Knockout允许您实现复杂的客户端交互,但是几乎所有web应用程序还需要与服务器交换数据,或者至少要序列化数据以供本地存储.交换或存储数据最方便的方式是JSON格式-- ...