关于Math.ceil()函数的问题

Math.ceil(0.5)结果是1.0没问题,但为什么Math.ceil(1/2)结果是0.0 ?

2个回答

因为1/2的值为0,所以返回的是0.0

u013828321
顾凌峰 嗯 我刚也知道了 谢谢
大约 3 年之前 回复

1/2并不是数学意义上的分数二分之一,在计算机里是不存在分数这个概念的。
1/2表示的是1整除2,既然是整除,那么值就是0。所以Math.ceil(0)=0.0
改为1.0/2,因为有浮点数,所以判定这不是int型的整除,而是浮点数的除法,此时值才是0.5,Math.ceil(1.0/2)结果才是1.0

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Math.ceil(1.2)和Math.ceil(6/5)为什么一个等于2,一个等于1
Java中的Math.ceil函数是向上取整,但是为什么Math.ceil(1.2)返回值是2,符合我的想象;而Math.ceil(6/5)等于1?谢谢。
java 为什么Math类下ceil函数的表述是“返回最小的(最接近负无穷大) double 值”?
Math.ceil(3.5) ; 返回的是 4 ,这个数不是离负无穷大更加远了吗?
function moveElement()函数
function moveElement(elementID,final_x,final_y,interval) { if (!document.getElementById) return false; if (!document.getElementById(elementID)) return false; var elem = document.getElementById(elementID); if (elem.movement) { clearTimeout(elem.movement); } if (!elem.style.left) { elem.style.left = "0px"; } if (!elem.style.top) { elem.style.top = "0px"; } var xpos = parseInt(elem.style.left); var ypos = parseInt(elem.style.top); var dist = 0; if (xpos == final_x && ypos == final_y) { return true; } if (xpos < final_x) { var dist = Math.ceil((final_x - xpos)/10); xpos = xpos + dist; } if (xpos > final_x) { var dist = Math.ceil((xpos - final_x)/10); xpos = xpos - dist; } if (ypos < final_y) { var dist = Math.ceil((final_y - ypos)/10); ypos = ypos + dist; } if (ypos > final_y) { var dist = Math.ceil((ypos - final_y)/10); ypos = ypos - dist; } elem.style.left = xpos + "px"; elem.style.top = ypos + "px"; var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")"; elem.movement = setTimeout(repeat,interval); } 在此函数中,为什么声明变量 var dist = 0; 初学JavaScript,此处不理解,请各位老师指教,谢谢!
DOM编程艺术课本中实现动画函数的一个问题
``` function moveElement(elementID,final_x,final_y,interval){ //alert("moveElement"); i++; if(!document.getElementById) return false; if(!document.getElementById(elementID)) return false; var elem = document.getElementById(elementID); // alert(elem.style.left); // if(elem.movement){ // clearTime(elem.movement); // } if(!elem.style.left){ elem.style.left = "0px"; } if(!elem.style.top){ elem.style.top = "0px"; } var xpos =parseInt(elem.style.left);//alert(xpos); var ypos =parseInt(elem.style.top);//alert(ypos); if(xpos==final_x&&ypos==final_y){ //alert("true"); return true; } //alert("xpos="+xpos+"final_x="+final_x); if(xpos<final_x){ var dist = Math.ceil((final_x-xpos)/10); xpos=xpos+dist; } if(xpos>final_x){ //alert("xpos="+xpos+"final_x="+final_x); var dist = Math.ceil((xpos-final_x)/10); xpos=xpos-dist; //alert("xpos="+xpos+"dist="+dist); } if(ypos<final_y){ var dist = Math.ceil((final_y-ypos)/10); ypos=ypos+dist; } if(ypos>final_y){ var dist = Math.ceil((ypos-final_y)/10); ypos=ypos-dist; } elem.style.left = xpos + "px" ;//alert(xpos); elem.style.top = ypos + "px" ; //alert(Math.abs(xpos)); var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")"; elem.movement = setTimeout(repeat,interval); } ``` repeat怎样理解啊,求赐教
js内父级函数调用子函数出现函数未定义问题
首先定义了一个全局函数Locating,又在Locating内定义了一个局部函数pageScroll,然后我全局函数调用pageScroll时,报错Uncaught ReferenceError: pageScroll is not defined。 ``` function Locating(locate,time){ console.log(locate+' -- '+time); var div_locate=document.getElementById(locate); var window_top_y = document.body.scrollTop;//获取滚动条顶部距离页面顶部的距离 var element_top_y = div_locate.offsetTop;//获取某元素顶部距离页面顶部的距离 var distance = window_top_y-element_top_y;//当前窗口与顶部的距离 var time = time; var move_distance = time>50?Math.ceil((distance/Math.ceil(time/50))):distance;//每次移动的距离 //每次移动的位移应为distance/duration,要移动的位置为element_top_y, function pageScroll() { var top = document.body.scrollTop;//获取滚动条顶部距离页面顶部的距离 var dis_top = top - element_top_y; window.scrollBy(0,-move_distance); scrolldelay=setTimeout('pageScroll()',50); if(dis_top<=0){ clearTimeout(scrolldelay); } // console.log(dis_top); } pageScroll(); } ``` 请问除了将pageScroll定义为全局的函数,各位前辈还有哪些其他解决方法可以借鉴学习一下的
解释roundToNextSignificant(double number)
/** * rounds the given number to the next significant number * * @param number * @return */ public static float roundToNextSignificant(double number) { final float d = (float) Math.ceil((float) Math.log10(number < 0 ? -number : number)); final int pw = 1 - (int) d; final float magnitude = (float) Math.pow(10, pw); final long shifted = Math.round(number * magnitude); return shifted / magnitude; } 谁能给我解释一下这个函数里的每句话是什么意思,已经这个函数是干什么的?
一个function里怎么调用另一个function的返回值
```javascript var arr=[1,2,3,4,5,6,7,8,9,0]; var result=''; var len=0; var index=0; getRom(); function getRom() { for(var i=0;i<4;i++) { len = arr.length; index = Math.ceil(Math.random()*(len-1)); result += arr.splice(index,1); } return result } function getValue() { var btn = window.document.onkeydown; //这里怎么得到result的值 var array = str.split(""); var arr = []; arr.push(btn); } ```
js运动的一个问题,为什么第一个函数不执行
``` ``` <div id="box"></div> #box{width: 100px;height: 100px;background: red;position: absolute;left: 0;top: 0;} js====== function act(obj, attr, target, fn){ clearInterval(obj.timer); obj.timer = setInterval(function(){ var cur = parseInt(css(obj, attr)); var speed = (target - cur) / 8; var stop = true; speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed); if(target != cur){ stop = false; } obj.style[attr] = speed + cur + 'px'; if(stop){ clearInterval(obj.timer); obj.timer = null; fn && fn.call(obj); } }, 20); } var box=document.getElementById('box'); act(box,'top',300); act(box,'left',300); 为什么我这样调用只执行了第二个函数? ``` ```
ceil, floor, round 新人
#include<stdio.h> # include<math.h> int main() { float a; while((scanf("%.1f",&a)!=EOF)) { printf("%d ",ceil(a)); printf("%d ",floor(a)); printf("%d ",round(a)); } return 0; } 1604.obj : error LNK2001: unresolved external symbol _round Debug/1604.exe : fatal error LNK1120: 1 unresolved externals Description 在很多编程语言的库中,都提供了很多函数,能大大方便我们的编程。就比如ceil,floor,round函数: ceil:向上取整,如ceil(1.2)结果为2; floor:向下取整,如floor(1.9)结果为1; round:四舍五入,如果round(1.4)为1,round(1.5)为2。 现在要你输出一个数的这三种函数值。 round函数需要自己编辑吗
Javascript中moveElement函数为什么总是无效?
照着Javascript DOM编程艺术打的,但是总是不能显示出移动的效果,我获取打印元素的位置,坐标值已经改变了,但是就是位置不移动 ![图片说明](https://img-ask.csdn.net/upload/201705/06/1494048490_320277.jpg) ``` function moveElement(elementID, final_x, final_y, interval) { if (!document.getElementById) return false; if (!document.getElementById(elementID)) return false; var elem = document.getElementById(elementID); if (elem.movement) { clearTimeout(elem.movement); } if (!elem.style.left) { elem.style.left = "0px"; } if (!elem.style.top) { elem.style.top = "0px"; } var xpos = parseInt(elem.style.left); var ypos = parseInt(elem.style.top); if (xpos == final_x && ypos == final_y) { return true; } if (xpos < final_x) { var dist = Math.ceil((final_x - xpos) / 10); xpos = xpos + dist; } if (xpos > final_x) { var dist = Math.ceil((xpos - final_x) / 10); xpos = xpos - dist; } if (ypos < final_y) { var dist = Math.ceil((final_y - ypos) / 10); ypos = ypos + dist; } if (ypos > final_y) { var dist = Math.ceil((ypos - final_y) / 10); ypos = ypos - dist; } elem.style.left = xpos + "px"; elem.style.top = ypos + "px"; var repeat = "moveElement('" + elementID + "'," + final_x + "," + final_y + "," + interval + ")"; elem.movement = setTimeout(repeat.interval); } ``` 在另一个制作图片切换效果的例子也是,图片不移动 ![图片说明](https://img-ask.csdn.net/upload/201705/06/1494048890_316870.jpg) ``` function prepareSlideshow() { if (!document.getElementsByTagName) return false; if (!document.getElementById) return false; if (!document.getElementById("intro")) return false; var intro = document.getElementById("intro"); var slideshow = document.createElement("div"); slideshow.setAttribute("id", "slideshow"); var preview = document.createElement("img"); preview.setAttribute("src", "images/slideshow.jpg"); preview.setAttribute("alt", "a glimpse of what awaits you"); preview.setAttribute("id", "preview"); slideshow.appendChild(preview); insertAfter(slideshow, intro); var links = intro.getElementsByTagName("a"); var destination; for (var i = 0; i < links.length; i++) { links[i].onmouseover = function() { destination = this.getAttribute("href"); if (destination.indexOf("index.html") != -1) { moveElement("preview, 0, 0, 5"); } if (destination.indexOf("about.html") != -1) { moveElement("preview, -150, 0, 5"); } if (destination.indexOf("photos.html") != -1) { moveElement("preview, -300, 0, 5"); } if (destination.indexOf("live.html") != -1) { moveElement("preview, -450, 0, 5"); } if (destination.indexOf("contact.html") != -1) { moveElement("preview, -600, 0, 5"); } } } } ```
jquery toggle()切换两个函数时报错
$(function() { var sideRight = $('#sideright'); $('.side-icon').each(function(index){ $(this).toggle(function(){ changeManyElem(sideRight,{'right':0},30); },function(){ changeManyElem(sideRight,{'right':-350},30); }) }) }) function getStyle(obj, attr) { if (obj.currentStyle) { return obj.currentStyle[attr]; } else { return getComputedStyle(obj, false)[attr]; } } function changeManyElem(obj, json, spd, fn) { var flag = true; clearInterval(obj.timer); obj.timer = setInterval(function() { for (var attr in json) { var icur = 0; if (attr == 'opacity') { icur = Math.round(parseFloat(getStyle(obj, attr)) * 100); } else { icur = parseInt(getStyle(obj, attr)); } var speed = 0; speed = (json[attr] - icur) / 10; speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed); if (icur != json[attr]) { flag = false; } if (attr == 'opacity') { obj.style[attr] = (icur + speed) / 100; } else { obj.style[attr] = icur + speed + "px"; } } if (flag) { clearInterval(obj.timer); if (fn) { fn(); } } }, spd); }
这个变化函数哪里出问题了?
``` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>多物体运动框架</title> <style> #div1 { width: 100px; height: 50px; background-color: red; margin-top:50px; } </style> <script type="text/javascript"> window.onload=function() { var oDiv = document.getElementById('div1'); oDiv.onmouseover=function() { startMove(300); } oDiv.onmouseout=function() { startMove(100); } } var timer = null; function startMove(iTarget)//这个函数 { var oDiv = document.getElementById('div1'); clearInterval(timer); timer=setInterval(function () { var iSpeed = (iTarget - oDiv.offsetwidth)/8; iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed); if(oDiv.offsetWidth == iTarget) { clearInterval(timer); } else { oDiv.style.width = oDiv.offsetWidth + iSpeed + 'px'; } },30) } </script> </head> <body> <div id="div1"></div> </body> </html> ```
currentStyle不是只能获取内联属性么,以下代码中变量curr为什么会跟着变化
``` window.onload = function(){ var oDiv = document.getElementById('div1'); oDiv.onmouseover = function (){ startMove(this,'height',200); } oDiv.onmouseout = function (){ startMove(this,'height',100); } }; function getStyle (obj,name){ if(obj.currentStyle){ return obj.currentStyle[name]; } else { return getComputedStyle(obj,false)[name]; } } function startMove (obj,styleName,iTarget){ clearInterval(obj.timer); obj.timer = setInterval(function(){ var curr = parseInt(getStyle(obj,styleName)); var speed = (iTarget - curr)/6; speed = speed>0?Math.ceil(speed):Math.floor(speed); if(curr == iTarget){ clearInterval(obj.timer); } else { obj.style[styleName] = curr + speed +'px'; } },30); } ```
javascript的一点困惑
``` html部分 <body> <h1>Web Design</h1> <p>These are the things you should know.</p> <ol id="linklist"> <li> <a href="structure.html">Structure</a> </li> <li> <a href="presentation.html">Presentation</a> </li> <li> <a href="behavior.html">Behavior</a> </li> </ol> </body> js部分 function prepareSlideshow() { var slideshow = document.createElement("div"); slideshow.setAttribute("id","slideshow"); var preview = document.createElement("img"); preview.setAttribute("src","topics.gif"); preview.setAttribute("alt","building blocks of web design"); preview.setAttribute("id","preview"); slideshow.appendChild(preview); var list = document.getElementById("linklist"); insertAfter(slideshow,list);//一个将slideshow放在list的方法 // Get all the links in the list var links = list.getElementsByTagName("a"); // Attach the animation behavior to the mouseover event links[0].onmouseover = function() { moveElement("preview",-100,0,10); } links[1].onmouseover = function() { moveElement("preview",-200,0,10); } links[2].onmouseover = function() { moveElement("preview",-300,0,10); } } addLoadEvent(prepareSlideshow);运行函数的方法 function moveElement(elementID,final_x,final_y,interval) { var elem = document.getElementById(elementID); if (elem.movement) { clearTimeout(elem.movement); } if (!elem.style.left) { elem.style.left = "0px"; } if (!elem.style.top) { elem.style.top = "0px"; } var xpos = parseInt(elem.style.left); var ypos = parseInt(elem.style.top); if (xpos < final_x) { var dist = Math.ceil((final_x - xpos)/10); xpos = xpos + dist; } if (xpos > final_x) { var dist = Math.ceil((xpos - final_x)/10); xpos = xpos - dist; } if (ypos < final_y) { var dist = Math.ceil((final_y - ypos)/10); ypos = ypos + dist; } if (ypos > final_y) { var dist = Math.ceil((ypos - final_y)/10); ypos = ypos - dist; } elem.style.left = xpos + "px"; elem.style.top = ypos + "px"; var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")"; elem.movement = setTimeout(repeat,interval); ``` 这是javascript-dom编程艺术第十章的代码 我有三个地方不明白 第一、为什么不能删去 if (!elem.style.left) { _elem.style.left = "0px";_ } if (!elem.style.top) { _ elem.style.top = "0px";_ }中的 if (!elem.style.left) {} 和 if (!elem.style.top) { },删去后不知为什么图片就不会 平移了。 第二、 为什么删去_if (elem.movement) { clearTimeout(elem.movement);_ _ }_这个代码后图片也不会平移了, 第三、为什么 var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")"; 我改成elem.movement = setTimeout moveElement(elementID,final_x,final_y,interval),interval); 后图片平移的时间消失了,没有图片平移的动画了
MapReduce中reduce函数不执行
准备自己写一个代码熟悉一下mapreduce,但是写好之后发现reduce函数不执行,运行程序也没有报错,逛了很多论坛都没有解决方案,因为是初步接触mapreduce,所以对mapreduce的编程不太了解,希望各位大大帮我看下代码有没有问题。 代码如下: Mapper: ``` package Utils; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; public class BayMapper extends Mapper<Object, Text, Cell, Text> { @Override public void map(Object key, Text value, Context context) throws IOException, InterruptedException{ StringTokenizer itr = new StringTokenizer(value.toString()); Cell[][] cells = new Cell[ClusterConfig.cellRow][ClusterConfig.cellColumn]; int cellx = 0; int celly = 0; for(int i = 0;i<ClusterConfig.cellRow;i++) for(int j = 0;j<ClusterConfig.cellColumn;j++){ cells[i][j] = new Cell(); } while(itr.hasMoreTokens()){ String outValue = new String(itr.nextToken()); System.out.println(outValue); String[] list = outValue.split(","); //list.length = 2; for(int i = 0;i<list.length;i++){ double x; double y; x = Double.valueOf(list[0]); y = Double.valueOf(list[1]); cellx = (int) Math.ceil((x - ClusterConfig.xmin) / ClusterConfig.intervalx); celly = (int) Math.ceil((y - ClusterConfig.ymin) / ClusterConfig.intervaly); //cells[cellx][celly].addnumberPoints(); //传入该格子中点的个数 } context.write(cells[cellx][celly],new Text(outValue)); } } } ``` Reducer: ``` package Utils; import java.io.IOException; import java.util.Iterator; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer; public class BayReducer extends Reducer<Cell, Text, Cell, IntWritable> { @Override protected void reduce(Cell key,Iterable<Text> values,Context context) throws IOException, InterruptedException{ int count = 0; Iterator<Text> iterator = values.iterator(); while(iterator.hasNext()){ count ++; } if(count >= 20){ context.write(key,new IntWritable(count)); } } } ``` Driver: ``` package Cluster; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.util.GenericOptionsParser; import Utils.BayMapper; import Utils.BayReducer; import Utils.Cell; public class ClusterDriver { /** * @param args * @throws IOException * @throws InterruptedException * @throws ClassNotFoundException */ public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException { Configuration conf = new Configuration(); conf.set("mapred.job.tracker", "localhost:9000"); String[] otherArgs = new GenericOptionsParser(conf, args) .getRemainingArgs(); if (otherArgs.length != 2) { System.err.println("Usage: Data Cluster <in> <out>"); System.exit(2); } @SuppressWarnings("deprecation") Job job = new Job(conf, "Baymax Cluster"); job.setJarByClass(ClusterDriver.class); job.setMapperClass(BayMapper.class); job.setReducerClass(BayReducer.class); job.setOutputKeyClass(Cell.class); job.setOutputValueClass(IntWritable.class); Path in = new Path(otherArgs[0]); Path out = new Path(otherArgs[1]); FileInputFormat.addInputPath(job, in);// 设置输入路径 FileOutputFormat.setOutputPath(job, out);// 设置输出路径 System.exit(job.waitForCompletion(true) ? 0 : 1); } } ```
js里div框缓冲浮动,不知道为什么没有效果,求大神指点!
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> #div1{width: 100px;height:150px;background: red;position: absolute;right: 0;bottom:0;} </style> <script> window.onscroll=function(){ var oDiv=document.getElementById("div1"); var scrollTop=document.documentElement.scrollTop||document.body.scrollTop; //oDiv.style.top=document.documentElement.clientHeight-oDiv.offsetHeight+scrollTop+"px"; startMove(document.documentElement.clientHeight-oDiv.offsetHeight+scrollTop); var timer=null; function startMove(iTarget){ var oDiv=document.getElementById("div1"); clearInterval(timer); timer=setInterval(function(){ var speed=(iTarget-oDiv.offsetTop)/6; var speed=speed>0?Math.ceil(speed):Math.floor(speed); if(oDiv.offsetTop==iTarget) { clearInterval(timer); } else{ oDiv.style.top=oDiv.offsetTop+speed+"px"; } },30); } } </script> </head> <body style="height: 2000px"> <div id="div1"></div> </body> </html>
用js判断当前时间是单周还是双周
我想判断当前时间是单周还是双周,用js写了个demo,效果是实现了,但是不知科学否?有没有更好的方法? ``` <script> document.write('xx科技有限公司放假时间'); function getDateIndex(){ var d = new Date(); //实例化时间函数 var now = d.getTime(); // 获取距 1970 年 1 月 1 日之间的毫秒数 var n = now - 259200000; // 由于1970.1.1 是星期四,不是星期一,减去后面三天 //document.write(now); var dayIndex = Math.ceil(n / 86400000) - 1; var weekIndex = Math.ceil(dayIndex / 7); var ds = weekIndex % 2; // 判断单双周 //alert(ds); var day = d.getDay(); // 返回一周中的某一天 if(ds == 0){ switch(day){ case 0: x ="今天是单周的星期天,干了一周,累成狗,终于可以休息了,只可惜明天就要上班了。。。"; break; case 1: x ="今天是单周的星期一,才放一天假。。。"; break; case 2: x ="今天是单周的星期二,才放一天假。。"; break; case 3: x ="今天是单周的星期三,才放一天假。。"; break; case 4: x ="今天是单周的星期四,才放一天假。。"; break; case 5: x ="今天是单周的星期五,才放一天假。。"; break; case 6: x ="今天是单周的星期六,才放一天假。。"; break; } }else{ switch(day){ case 0: x ="今天是双周的星期天,明天要上班了。。。"; break; case 1: x ="今天是双周的星期一,两天假哦!!"; break; case 2: x ="今天是双周的星期二,两天假哦!!"; break; case 3: x ="今天是双周的星期三,两天假哦!!"; break; case 4: x ="今天是双周的星期四,两天假哦!!"; break; case 5: x ="今天是双周的星期五,两天假哦!!"; break; case 6: x ="今天是双周的星期六,放假休息ing,播种好季节!!"; break; } } alert(x); } window.onload = getDateIndex; </script> ```
我的选择难度怎么赋值给切割函数啊
``` ``` var contentDiv = document.getElementById("content"); var ofrag; var oldimgs = []; //旧数组 var newimgs = []; //新数组 var imgItems = []; // 存放DIV var pos = []; // 存放图片位置 var minindex = 5; var near; var xxx; var xxx1; function getone(num){ //选择难度 if(num==3){ row=col=3 xxx=3; //xxx代表 行列数 xxx1=200; ///xxx1 代表要乘的数 } else if(num==4){ row=col=4 xxx=4; xxx1=150; } else if(num==6){ row=col=6 xxx=6 xxx1=100; } } function init(row,col){ //为oldimgs赋值 for(var i=1;i<=row*col;i++){ oldimgs.push(i); } newimgs = oldimgs.slice(0);//赋值新数组 ofrag = document.createDocumentFragment(); //文档碎片 for(var i=0;i<row * col;i++){ //i-----0-8 i%3 0%3=0 1%3=1 2%3=2 3%3=0 // 0/3=0 1/3=0 2/3=0 4/3=1 /* 3.3 200 4.4 150 6.6 100 */ var x = -((i%xxx)*xxx1); //0 200 400 进行循环 var y = -(Math.floor((i/xxx))*xxx1); //0 0 200 var div = document.createElement("div"); div.style.cursor = "move"; div.style.backgroundImage = "url(pintu.jpeg)"; div.style.backgroundRepeat = "no-repeat"; div.style.float = "left"; div.style.height = "xxx1px"; div.style.width = "xxx1px"; div.style.backgroundPosition = ""+ x +"px "+y+"px"; imgItems.push(div); ofrag.appendChild(div); } contentDiv.appendChild(ofrag); getone(3); } init(xxx,xxx); document.getElementById("start").onclick = function(){ startGame(); //开始游戏 } function startGame(){ //打乱图片位置 newimgs.sort(function(a,b){ return Math.random() > 0.5 ?1: -1; }) //记住之前图片的位置 for(i=0;i<row*col;i++){ pos[i] = [imgItems[i].offsetLeft,imgItems[i].offsetTop]; } for(var i =0; i<row*col;i++){ var num = newimgs[i]-1; var x = -(num%xxx)*xxx1; var y = -Math.floor((num/xxx))*xxx1; imgItems[i].style.left = pos[i][0] + "px"; imgItems[i].style.top = pos[i][1] + "px"; imgItems[i].style.position = "absolute"; imgItems[i].style.backgroundPosition = ""+x+"px "+y+"px "; imgItems[i].index = i; //设置访问的下标 imgItems[i].onmousedown = dragImage; } } function cheakNear(dom1,dom2){ //判断是否重合到一起了 //dom1是我们拖动的DIV dom2是我们循环的每一个DIV if(dom1==dom2){ return; } var l1 = dom1.offsetLeft; var t1 = dom1.offsetTop; var r1 = dom1.offsetWidth +l1; var b1 = dom1.offsetHeight + t1; var l2 = dom2.offsetLeft; var t2 = dom2.offsetTop; var r2 = dom2.offsetWidth +l1; var b2 = dom2.offsetHeight + t1; // 如何去判断我拖动的图片覆盖到下面的图片了 if(l1 > r2 || t1 > b2 || r1 < l2 || b1 < t2){ //一定没有覆盖到图片 别忘了练习 return false; } else{ return true; } } function dis(dom1,dom2){ var l1 = dom1.offsetLeft - dom2.offsetLeft; var l2 = dom1.offsetTop - dom2.offsetTop; return Math.sqrt(l1*l1+l2*l2); //不能为负数 } function findnear(dom){ var index_nei = -1; var imin = 999999; for(var i=0;i<row*col;i++){ imgItems[i].className = ""; if(cheakNear(dom,imgItems[i])){ var dx = dis(dom,imgItems[i]); if(imin>dx){ imin = dx; index_nei = i; } } } if(index_nei==-1){ return null; } else{ return imgItems[index_nei]; } } var disX,disY,l,t; function dragImage(event){ //确定我们点的是哪个DIV var dom = this; minindex++; dom.style.zIndex = minindex; disX = event.clientX - dom.offsetLeft; //X坐标距离差 disY = event.clientY- dom.offsetTop; document.onmousemove = function(event){ l = event.clientX - disX; //鼠标拖动图片 near = findnear(dom); if(near){ //如果是一个真实的对象 返回真 ,反之。 near.className= "active"; } dom.style.left = l+"px"; dom.style.top = t+"px"; } document.onmouseup = function(){ //鼠标释放 //move函数代表着图片移动回去 if(near){ near.className = ""; move(dom,pos[near.index][0],pos[near.index][1]); move(near,pos[dom.index][0],pos[dom.index][1]); // 交换一下index var temp = 0; temp = near.index; near.index = dom.index; dom.index = temp; for(var i =0; i<row*col;i++){ oldimgs[i] = imgItems[i].index+1; } if(success()){ gameOver(); } } else{ move(dom,pos[dom.index][0],pos[dom.index][1]); //move 函数 } //释放资源 document.onmousemove = null; document.onmouseup = null; } } //拼图结束 function success(){ for(var i=0;i<row*col-1;i++){ if(newimgs[i]!=oldimgs[i]){ return false; } } return true; } //游戏结束 function gameOver(){ var successDIV = document.createElement("div"); var inner_p = document.createElement("p"); var t = 2; var timer ; successDIV.style.cssText = "position:absolute;z-index:99999;top:50%;width:100%;text-align:center;font-size:70px;color:red;"; successDIV.innerHTML = "good job !!"; successDIV.appendChild(inner_p); contentDiv.appendChild(successDIV); function timerClear(){ inner_p.innerHTML = t--; if(t<=0){ clearInterval(timer); window.location.reload(); //刷新本页面 return; } timer=setTimeout(function(){ timerClear(); },1000); } timerClear(); } //拖动后不交换位置回到原位置 function move(dom,left,top){ //left和top是原始数据 clearInterval(dom.timer); dom.timer = setInterval(function(){ var stop_index = false;// 标志,停止移动 //移动到的新数据 var i_left = parseInt(dom.style.left); var i_top = parseInt(dom.style.top); if(left!=i_left || top!=i_top){ // i_speed 一般代表速度值 var i_speed_left = (left - i_left)/5; var i_speed_top = (top - i_top)/5; // Math.ceil 吐过这个值是整数 会将小数部分进一, 如果是负数则会舍弃小数 i_speed_left = i_speed_left > 0 ? Math.ceil(i_speed_left) : Math.floor(i_speed_left); i_speed_top = i_speed_top > 0 ? Math.ceil(i_speed_top) : Math.floor(i_speed_top); dom.style.left = (i_left + i_speed_left) + "px"; dom.style.top = (i_top + i_speed_top) + "px"; } else{ stop_index = true; } if(stop_index){ clearInterval(dom.timer); } },10); }
请教一个关于NodeJs中在多个pool.query回调中的变量赋值问题?
**目的描述: ** 我根据查到的总的数据数目和前端请求分页的每页数目,计算出要分的总的页数,以便于做个页码翻页。 **出现问题:** 代码部分: ``` router.get('/list',(req,res)=>{ var obj = req.query; var $page = Math.round(obj.page); var $size = Math.round(obj.size); var $pageCount = null; //临时存储 总页数 var pageCount = 0;//第一种写法 console.log(obj); if(!$page){ $page = 1; } if(!$size){ $size = 10; } $page --; console.log('前端请求条数'+$size); console.log('初始值'+ pageCount);//this.pageCount //console.log('初始值'+ pageCount);//第二种写法 //获得总的页面数 var sqlstr2 = 'SELECT * FROM xz_laptop'; pool.query(sqlstr2,(err,result)=>{ if(err) throw err; if(result.length > 0){ //总页数 $pageCount = result.length; console.log('总数据数'+$pageCount); console.log($pageCount/$size); pageCount = Math.ceil($pageCount/$size); console.log('总的页数:'+ pageCount); } }); //分页查询 var sqlstr = 'SELECT * FROM xz_laptop LIMIT ? , ?'; pool.query(sqlstr,[($page*$size),$size],(err, result)=>{ //console.log() if(err) throw err; console.log(result); if(result.length > 0){ console.log('返回页数'+ pageCount ); res.send({data:result,pno:($page+1),pCount:pageCount}); //res.send(result); }else{ res.send({code:301,msg:'list error'}); } }); ``` 采用第一种写法:pageCount只能获取到第一次服务器开启时的数据,此后返回的pageCount均为null,而且返回的数据对象是: {data:…, pno:…,//返回的页码 pCount:…,//总的页数,也就是我想要的数 pageCount:….//这是什么鬼,为什么会出现四个属性?? } 可是我原本的数据对象是这样的: {data:result,pno:($page+1),pCount:pageCount} 为什么会多出来一个属性??这是一点。 采用第二种写法,直接不声明pageCount,后续的pageCount全部使用this.pageCount,就可以得到想要的结果数据,但是我并没有赋初始值,可是初始值哪里会打印一个1是什么鬼。而且为什么这样就能打印出来,因为是隐式的提升为对象的属性了吗?? 如果有this指向问题,用变量保存了this,依然不行,结果是undefine,为什么呢? 还有像这种执行多条Sql语句是否能这样写? 望各位大佬指教! 考虑过函数提升、this指向、但是还是想不通,为什么呢??
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Vue + Spring Boot 项目实战(十四):用户认证方案与完善的访问拦截
本篇文章主要讲解 token、session 等用户认证方案的区别并分析常见误区,以及如何通过前后端的配合实现完善的访问拦截,为下一步权限控制的实现打下基础。
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
漫话:什么是平衡(AVL)树?这应该是把AVL树讲的最好的文章了
这篇文章通过对话的形式,由浅入深带你读懂 AVL 树,看完让你保证理解 AVL 树的各种操作,如果觉得不错,别吝啬你的赞哦。 1、若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值。 2、若它的右子树不为空,则右子树上所有的节点值均大于它的根节点值。 3、它的左右子树也分别可以充当为二叉查找树。 例如: 例如,我现在想要查找数值为14的节点。由于二叉查找树的特性,我们可...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
开源并不是你认为的那些事
点击上方蓝字 关注我们开源之道导读所以 ————想要理清开源是什么?先要厘清开源不是什么,名正言顺是句中国的古代成语,概念本身的理解非常之重要。大部分生物多样性的起源,...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
《C++ Primer》学习笔记(六):C++模块设计——函数
专栏C++学习笔记 《C++ Primer》学习笔记/习题答案 总目录 https://blog.csdn.net/TeFuirnever/article/details/100700212 —————————————————————————————————————————————————————— 《C++ Primer》习题参考答案:第6章 - C++模块设计——函数 文章目录专栏C+...
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法不过,当我看了源代码之后这程序不到50
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
相关热词 c# 引用mysql c#动态加载非托管dll c# 两个表数据同步 c# 返回浮点json c# imap 链接状态 c# 漂亮字 c# 上取整 除法 c#substring c#中延时关闭 c#线段拖拉
立即提问