JS中取整以及随机颜色问题

  前言:感觉自己已经好久好久没有写博客了,最近都是在写在线笔记比较多。现在来到新公司了,昨天刚刚完成一个项目所以今天有空研究研究一下前端方面的技术。下午在看一个游戏代码的时候,发现了几个别人留下的不错的代码小技巧。譬如说取整问题,随机颜色问题。其实这些问题都不大,但是仔细研究一下还是别有洞天,对于提高前端开发方面的理解还是很有帮助的。



取整问题:

  1、常规方法:

    Math.floor(x),返回小于等于x,且最接近x的整数;

         Math.floor(1.2);//1

       Math.floor(-2.1);//-3

    Math.ceil(x),返回大于等于x,且最接近于x的整数。

         Math.ceil(1.2);//2

       Math.ceil(-2.1);//-2

  以上这两个没什么好解释的,比较容易理解。基本上就是Math对象的方法调用而已,参数主要是针对number基本数据类型的。

  2、一般方法:

    使用parseInt(x),这是一个预置的全局函数,可解析一个字符串,并返回一个整数。

         parseInt("12");//12

       parseInt("12abc");//12

       parseInt(12.345);//12

       parseInt(-12.345);//-12

       parseInt("12.333abc");//12

       parseInt("abc");//NaN

       typeof(parseInt("12abc"));//"number"

       parseInt(12.345,8);//10,八进制表示

    注意,当parseInt()函数的参数是正数时,则下取整;如果是负数时,则上取整。简而言之就是,parseInt只会取string或者number参数的整数部分。另外,当字符串首位不是一个数字时,会返回NaN;反之则一直解析字符串,直到遇到非数字时才会停止,并返回前面数字的整数部分。同时parseInt()还接受第二个参数,参数为解析的数字的基数(即多少进制),该值介于 2 ~ 36 之间。

  3、特殊方法:

    使用"|"、">>" 、">>>"、"^"、"<<"等二元位操作符,操作0位。

      12.345 | 0;//12

      -12.345 | 0;//-12

      12.345 ^ 0;//12

      12.345 >> 0;//12

      ……

  由于浮点数是不支持位运算的,所以小数部分将不会处理。可能是JS语言(其他编程语言也是)机制的原因,会直接把小数部分“处理”掉,直接返回整数部分而不会报错。



随机颜色问题:

   var b = Math.random() * 16777215 |0 ;

   var color = "#" + b.toString(16);

   var div = document.getElementById("div");

   div.style.backgroundColor = color;

  解释:

    16777215,首先这个数字是颜色白色的十进制表示,它等于2的24次幂减1。为什么是16777215呢?由于颜色计数跟内存一样,是由0开始的。我们平时使用的#000000这种是十六进制表示法,它由三组颜色构成,各占两位十六进制数。也就是(255,255,255),将它转换为二进制的话就是3个八位二进制(即24位)。所以#000000(白色)的十进制值就等于2的24次方减一。

    找到了对应的十进制数后,通过与随机方法相乘以及跟0进行按位或操作进行取整。之后在通过number数据类型的方法toString()把参数设为16,即将该数据转换回十六进制,然后拼接“#”字符就能得到了一组随机的16进制颜色值

时间: 2024-12-26 21:44:39

JS中取整以及随机颜色问题的相关文章

js中取整方法的比较

Math.ceil():向上取整 Math.floor():向下取整 Math.round():四舍五入 需要注意的比如:Math.ceil(-1.6) = -1.0; Math.round(-1.5) = -1; Math.round(-1.6) = -2;

js 向上取整、向下取整、四舍五入

js 向上取整.向下取整.四舍五入 CreateTime--2018年4月14日11:31:21 Author:Marydon // 1.只保留整数部分(丢弃小数部分) parseInt(5.1234);// 5 // 2.向下取整(<= 该数值的最大整数)和parseInt()一样 Math.floor(5.1234);// 5 // 3.向上取整(有小数,整数就+1) Math.ceil(5.1234); // 4.四舍五入(小数部分) Math.round(5.1234);// 5 Mat

JS 实现取整

Js 常用数值函数(Math,parseInt)取整 1.丢弃小数部分,保留整数部分parseInt(5/2) 2.向上取整,有小数就整数部分加1Math.ceil(5/2) 3,四舍五入.Math.round(5/2) 4,向下取整Math.floor(5/2) Math 对象的方法FF: Firefox, N: Netscape, IE: Internet Explorer 方法 描述 FF N IEabs(x) 返回数的绝对值 1 2 3acos(x) 返回数的反余弦值 1 2 3asin

js 小数取整的函数

1.丢弃小数部分,保留整数部分 js:parseInt(7/2) 2.向上取整,有小数就整数部分加1 js: Math.ceil(7/2) 3,四舍五入. js: Math.round(7/2) 4,向下取整 js: Math.floor(7/2)

js中取session的值

在js中貌似不能取session的值,我在后台设置的session一直拿不到,于是用间接的方式拿到session的值. 首先在jsp中嵌入java代码,用java设置一个变量来取session值,再在页面设置标签取这个变量的值,最后通过js取标签的值(即是session的值) 具体代码如下: (1)后台设置session: request.getSession().setAttribute("msg",strAlertMsg); return get(request, response

c#中取整,向上取,向下取

Math.Ceiling()向上取整, Math.Floor()向下取整 示例: d = 4.56789 Math.Ceiling(Convert.ToDecimal(d)).ToString();Math.Ceiling(Convert.ToDouble(d)).ToString();Math.Floor(Convert.ToDecimal(d)).ToString(); Math.Floor(Convert.ToDouble(d)).ToString(); --记录铭心

js 各种取整方式及方法

1.直接丢弃小数部分,保留整数部分 a:parseInt(1.5555) b: 0|1.5555 2.向上取整 a: Math.ceil(1.5555) b: (1.5555+0.5).toFixed(0) c: Math.round(1.5555+0.5) 3.向下取整 a: Math.floor(1.5555) b: (1.5555-0.5).toFixed(0) c:Math.round(1.5555-0.5) 4.四舍五入. b:1.5555.toFixed(0) c:Math.roun

js小数取整 小数保留两位

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="aa">12.00</div> <div id="bb">12.666</div> </body></h

python中取整的几种方法

#encoding:utf-8import math #向上取整print "math.ceil---"print "math.ceil(2.3) => ", math.ceil(2.3)print "math.ceil(2.6) => ", math.ceil(2.6) #向下取整print "\nmath.floor---"print "math.floor(2.3) => ", ma