您的位置:首页 > 其它

四舍六入五单双算法

2014-03-11 08:49 246 查看

规则:

⑴ 在拟舍弃的数字中若左边第一位数字小于5(不含5)时,则舍弃。

⑵ 在拟舍弃的数字中若左边第一位数字大于5(不含5)时,则进一。

⑶ 在拟舍弃的数字中若左边第一位数字等于5,其右边的数字并非全部是零时,则进一。

⑷ 在拟舍弃的数字中若左边第一位数字等于5,其右边的数字全部是零或为空时,所拟保留的末位数字若为奇数则进一,若为偶数(含0)则不进。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>round</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript">

function EffectiveNum(orignNum,n){
var loc; //标记位置,用于截取有效位的值

var returnNum;  //返回值

if(orignNum.toString()=="NaN" || orignNum.toString()=="Infinity" || orignNum.toString()=="0" ){
return 0;
}

//console.info('==='+loc);
//用小数点拆分数字;修约分小数点前部分大于0和小数点前数字小于0两种情况,此处只判断了小数点前大于0的情况
var str;
str=orignNum.toString().split(".");

//数字格式不正确
if(str.length<1 || str.length>2){
return 0;
}
else if(str.length==1){
str[1]="";
}

//在拟舍弃的数字中若左边第一位数字等于5,判断奇偶时初始化变量

loc = str[0].length+parseInt(n-1);

//合并数字

var uniteNum;
if(parseInt(str[0])==0||parseInt(str[0])>0){

uniteNum=str[0].concat(str[1]);

}
////////////////////////////////////////////////////////////////////////////////////////////
//小数点前部分大于0
////////////////////////////////////////////////////////////////////////////////////////////
if(parseInt(str[0])>0||parseInt(str[0])==0){
//参数说明 mender:拟舍弃的数字中若左边第一位数字
var mender=str[0].length+parseInt(n);

//拟舍弃数字的最左一位数字大于5或者小于5
if(uniteNum.charAt(mender)>5 || uniteNum.charAt(mender)<5){

returnNum=(parseFloat(orignNum)).toFixed(n);

}else if(uniteNum.charAt(mender)==5){
//拟舍弃的数字中左边第二位数字开始截取
var needCal = mender+1;
var vary = parseInt(uniteNum.substring(needCal));
//5后面一定是数值
if(!isNaN(vary)&&vary!=0){
returnNum=(parseFloat(orignNum)).toFixed(n);

}else{

if(uniteNum.charAt(loc)%2==0){

//判断最后的有效位为偶数时
returnNum = (uniteNum.substring(0,(loc+1)))/Math.pow(10,n);

var tem = (returnNum.toString()).indexOf('.');
if(tem==-1){
returnNum = returnNum+'.0';
}

}else{
//判断最后的有效位为奇数时
var i = 1/Math.pow(10,n);
returnNum = uniteNum.substring(0,(loc+1))/Math.pow(10,n);
//console.info('===奇数'+returnNum+'=='+i);
returnNum = i+returnNum;
if(n==1){
returnNum = returnNum.toFixed(1);
}

}

}
}
}

return returnNum;
}

</script>

</head>

<body>
原始值:<input type="text" name="" id="originalValue">
精确度:<input type="text" name="" id="precision">
<input type="button" value="计算" onclick="setLocaiton()">

<script type="text/javascript">

function setLocaiton(){
var originalValue = document.getElementById('originalValue').value;
var precision = document.getElementById('precision').value;
EffectiveNum(originalValue,precision);

}
</script>
</body>
</html>






内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: