由一篇博文做出的代码,不用Math.round()如何实现其功能
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<meta name = "author" content="chen siming ,Gabrielchen,chengdu ">
<title>bitOperation</title>
<script>
//hey,if we don't have the function of round() in javascript,what should we do ?
function myRound1(x){
//why not use toString()? what are their difference?
//about "null" and "undefined" var xStr = String(x).split(".");
xStr0=xStr[0];
xStr1=xStr[1];
if(xStr1==null){
return x;
}
else {
if (parseInt(xStr1.slice(0, 1)) > 5) {
if (parseInt(xStr0 > 0)) {
return parseInt(xStr0) + 1;
}
else return parseInt(xStr0) - 1;
}
else return parseInt(xStr0);
} //for me is difficult to distinguish split()分离 and slice()切下
//split() 法用于把一个字符串分割成字符串数组,return:array[] parameter: split(separator,howmany)
//separator 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
//howmany 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。
// 如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。 //slice()方法可从已有的数组中返回选定的元素 return :返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。 parameter :slice(start,end)
//start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
//end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
} //what if we can not use the all javascript function ,how can we do that ?
function myRound2(x){ //| 二进制或运算
return ~~(x > 0 ? (x + 0.5) : (x - 0.5)); } function myRoundBit(x){
//bit - operation
//~就是按位取反,类似:00111,取反则为11000。取反会干掉小数
// if x =12.5 then ~x =12
//>>是有符号右移运算符
return ~~(x + 0.5 + (x >> 30));
}
//it's very sorry to tell you ,the functions of "myRound2()" and "myRoudBit()" are not to work correctly
function main(){
var x= document.getElementById("bitOpera").value;
document.write("myRound1:"+myRound1(x)+"<br/>"+"myRound2(error):"+myRound2(x)+"<br/>"+"myRoundBit(error):"+myRoundBit(x)+"<br/>"+"Math.round():"+Math.round(x)+"<br/>");
document.write("it's very sorry to tell you ,the functions of 'myRound2()' and 'myRoudBit()' are not to work correctly,can you fix it ?");
} </script>
</head>
<body>
<h1>please enter the DECIMAL</h1>
<input type="text" id="bitOpera">
<input type="button" id="btn" value="click" onclick="main()"> </body>
</html>
其中myRound1()和myRoundbit()方法有问题
-原博客地址 :发表于 2015 年 3 月 26 日 由 Gabriel
由一篇博文做出的代码,不用Math.round()如何实现其功能的更多相关文章
- Visual Studio Code(VS code)你们都在用吗?或许你们需要看一下这篇博文
写在前面 在前端开发中,有一个非常好用的工具,Visual Studio Code,简称VS code. 都不用我安利VS code,大家就会乖乖的去用,无数个大言不惭的攻城狮,都被VS code比德 ...
- 关于InterruptedException的两篇博文的转载
博文一:https://www.jianshu.com/p/a8abe097d4ed InterruptedException异常 在了解InterruptedException异常之前应该了解以下的 ...
- 【转】Visual Studio Code(VS code)你们都在用吗?或许你们需要看一下这篇博文
写在前面 在前端开发中,有一个非常好用的工具,Visual Studio Code,简称VS code. 都不用我安利VS code,大家就会乖乖的去用,无数个大言不惭的攻城狮,都被VS code比德 ...
- 标准程序员系列-Github篇-初始化一个代码仓库
下面将一步步介绍怎样使用GitHub来初始化一个项目的版本控制仓库: 1. 到GitHub上注册自己的账号:https://github.com/ 2. 创建第一个代码仓库一个仓库相当于一个项目的代码 ...
- webIDE 第二篇博文
这是我做webIDE过程中的第二篇博文,之所以隔了这么长时间没更,因为确实是没有啥进度啊,没什么可写的,现在虽然依然没啥进度,但中途遇到很多坑,这些坑还是有记录下来的必要的. 因个人水平问题,可能有的 ...
- 你们都在用IntelliJ IDEA吗?或许你们需要看一下这篇博文
写在前面 以前一直用的elipce,如今入坑IntelliJ IDEA,没想到啊.深深的爱上了它,强大到无所不能: "工欲善其事必先利其器",IntelliJ IDEA作为一个非常 ...
- 看到篇博文,用python pandas改写了下
看到篇博文,https://blog.csdn.net/young2415/article/details/82795688 需求是需要统计部门礼品数量,自己简单绘制了个表格,如下: 大意是,每个部门 ...
- Spring整合Struts2框架的第一种方式(Action由Struts2框架来创建)。在我的上一篇博文中介绍的通过web工厂的方式获取servcie的方法因为太麻烦,所以开发的时候不会使用。
1. spring整合struts的基本操作见我的上一篇博文:https://www.cnblogs.com/wyhluckdog/p/10140588.html,这里面将spring与struts2 ...
- 程序员小张的第一篇博文 --记Markdown的使用学习
1.前言 为了即将到来的面试做准备,以及记录一下平日里自己的学习过程和生活日常,我开始进驻博客园啦!这就是我的第一篇博客(有点小激动)~ 作为一只新手,首先记录一下今晚的编写博文的学习过程吧~ 2.使 ...
随机推荐
- clientHeight、offsetHeight、scrollHeight、clientTop、scrollTop、offsetTop的对比
首先,这些都是dom节点的属性. 高宽属性:clientHeight:html元素不含border的高度. 对于box-sizing不同的情况,有些地方需要注意一下.当box-sizing为conte ...
- 理解Python中的__builtin__和__builtins__
以Python 2.7为例,__builtin__模块和__builtins__模块的作用在很多情况下是相同的. 但是,在Python 3+中,__builtin__模块被命名为builtins. 所 ...
- javaScript中两个等于号和三个等于号之间的区别
一言以蔽之:==先转换类型再比较,===先判断类型,如果不是同一类型直接为false. ===表示恒等于,比较的两边要绝对的相同 alert(0 == ""); // trueal ...
- 软工2017第五周——个人PSP
10.13 --10.19本周例行报告 1.PSP(personal software process )个人软件过程. 类型 任务 预计时间 开始时间 结束时间 中断时 ...
- 内存转储文件调试系统崩溃bug
百度百科:内存转储文件 内存转储是用于系统崩溃时,将内存中的数据转储保存在转储文件中,供给有关人员进行排错分析用途.而它所保存生成的文件就叫做内存转储文件. 内存转储文件也被称作虚拟内存,它是用硬盘里 ...
- lintcode-39-恢复旋转排序数组
39-恢复旋转排序数组 给定一个旋转排序数组,在原地恢复其排序. 说明 什么是旋转数组? 比如,原始数组为[1,2,3,4], 则其旋转数组可以是[1,2,3,4], [2,3,4,1], [3,4, ...
- autoCAD 2008 Win7 64位, win8 64位 安装 燕秀工具箱 yanxiu.cui 文件下载
Win7 64位, win8 64位 安装 燕秀工具箱 , 提示没有权限. 网站上下载燕秀工具箱, 安装后. 提示权限不够. 解决办法如下; 1. CAD, 权限修改. 2. 下载 yanxiu.cu ...
- 利用Vue v-model实现一个自定义的表单组件
原文请点此链接 http://blog.csdn.net/yangbingbinga/article/details/61915038
- idea导出jar包
在File->Project Structure->Artifacts,如图: 然后: 点击Apply,OK. 跳出去就可以看到多了META-INF文件夹: 然后build项目,就可以看 ...
- xpath获取块元素下<br>下的信息
再爬虫取字段的时候遇到一种类似下面的结构: <p> <br> "通用名称:xxxxxx" </p> 用xpath取的方式://p//text() ...