截取小数的问题 t=Math.floor(i) i=i-t > .5 ? t+1 : t这是我的方法 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先判断.5的.是的话加.1再ROUND... <script><script>var n=5.5;if(n*2==Math.round(n*2)){n=n-0.1;}alert(Math.round(n));</script></script> var t = Math.round(i - 0.00001);这样呢,可以么. Math.floor(n + 0.5 - 1e-7); 小数位大于 .5 向上取整,小于等于则向下取整。第一步取得小数位,第二步将小数位与.5比较,第三部根据比较结果决定如何取整!function greatThanDotFiveToCeil(number){ return ((number - Math.floor(number)) > 0.5) ? Math.ceil(number) : Math.floor(number);}document.write(greatThanDotFiveToCeil(1),"<br />"); // 1document.write(greatThanDotFiveToCeil(1.9),"<br />"); // 2document.write(greatThanDotFiveToCeil(0.51),"<br />"); // 1document.write(greatThanDotFiveToCeil(0.4),"<br />"); // 0写出来就是 lz 自己滴方法,何必问呢,呵呵 支持指定小数位数的:<SCRIPT type="text/javascript">var a = [1.4,1.5,1.51,1.6];var xround = function(fn,n){ n = n||0; var z = fn.toString().split('.'),x = z[0],y = z[1]&&z[1].toString(),r = new RegExp('(\\d{'+n+'})(\\d)(\\d*)'); y&&r.test(y)&&y.replace(r,function(s,a,b,c){ if(b&&b>5){var t = a?'.'+(a*1+1):1;x = x*1+t;return s;} if(b&&b==5){var t = a?c?'.'+(a*1+1):'.'+a:c?1:0;x = x*1+t;return s;} if(a){x = x+'.'+a;} return s; }); return x;}var foo = function(list){ while(list.length){ var n = list.shift(); document.write('xround('+n+') = '+xround(n)+'<br/>'); }}foo(a);</SCRIPT> 俺再补充一个简易正则版滴L@_@Kfunction greatThanDotFiveToCeil(number){ // Method 1: //return ((number - Math.floor(number)) > 0.5) ? Math.ceil(number) : Math.floor(number); // Method 2: var reg = /^\d+\.([6-9]\d*|5\d+)$/g; return reg.test(number) ? Math.ceil(number) : Math.floor(number); }document.write(greatThanDotFiveToCeil(1),"<br />"); // 1document.write(greatThanDotFiveToCeil(1.9),"<br />"); // 2document.write(greatThanDotFiveToCeil(0.51),"<br />"); // 1document.write(greatThanDotFiveToCeil(0.4),"<br />"); // 0 晕,这么快就结贴了,俺滴正则精度版还没来得及贴呢L@_@K/* * Summary: 精度位数之后的小数位大于 5 则进位,小于等于 5 则舍弃。 * * number: 给定的数字。 * iPrecision: 精度位数,即保留的小数位数。 */function greatThanDotFiveToCeil(number, iPrecision){ if (iPrecision) number = number * Math.pow(10,iPrecision); else iPrecision = 0; // Method 1: //return (((number - Math.floor(number)) > 0.5) ? Math.ceil(number) : Math.floor(number))/Math.pow(10,iPrecision); // Method 2: var reg = /^\d+\.([6-9]\d*|5\d+)$/g; return (reg.test(number) ? Math.ceil(number) : Math.floor(number))/Math.pow(10,iPrecision); }document.write(greatThanDotFiveToCeil(0.6),"<br />"); // 1document.write(greatThanDotFiveToCeil(1.95),"<br />"); // 2document.write(greatThanDotFiveToCeil(0.5158),"<br />"); // 1document.write(greatThanDotFiveToCeil(0.415),"<br />"); // 0document.write("<br />");document.write(greatThanDotFiveToCeil(0.6),"<br />"); // 1document.write(greatThanDotFiveToCeil(1.95, 1),"<br />"); // 1.9document.write(greatThanDotFiveToCeil(0.5158, 2),"<br />"); // 0.52document.write(greatThanDotFiveToCeil(0.415, 2),"<br />"); // 0.41 怎么代码量差距这么大啊!呵呵n = 1.501Math.floor(n + 0.5 - 1e-7) : 2Math.floor(n + 0.49) : 1 js根据文本框的值截取字符串 ExtJs横向滚动条的问题 给Ext.menu.Menu动态添加item出错 一直没有解决的问题?高手指点 每天看都没有人回答 好可怜 急..多行文本框中选择中一行 event对象的用法! js 聚焦 失焦 问题,高手赐教啊 如何无需在新打开的窗口中显示页面 如何在一层又一层的框架中找到最外层的框架? 如何使窗口右上角的关闭按钮(就是那个x)无效 用JS写一个可以显示,编辑,更新的grid控件,实现起来麻烦吗? 用 <a href="??????">用户桌面</a>能不能返回呀?????
<script>
var n=5.5;
if(n*2==Math.round(n*2)){
n=n-0.1;
}
alert(Math.round(n));
</script>
</script>
第一步取得小数位,
第二步将小数位与.5比较,
第三部根据比较结果决定如何取整!function greatThanDotFiveToCeil(number)
{
return ((number - Math.floor(number)) > 0.5) ? Math.ceil(number) : Math.floor(number);
}document.write(greatThanDotFiveToCeil(1),"<br />"); // 1
document.write(greatThanDotFiveToCeil(1.9),"<br />"); // 2
document.write(greatThanDotFiveToCeil(0.51),"<br />"); // 1
document.write(greatThanDotFiveToCeil(0.4),"<br />"); // 0写出来就是 lz 自己滴方法,何必问呢,呵呵
var a = [1.4,1.5,1.51,1.6];var xround = function(fn,n){
n = n||0;
var z = fn.toString().split('.'),x = z[0],y = z[1]&&z[1].toString(),r = new RegExp('(\\d{'+n+'})(\\d)(\\d*)');
y&&r.test(y)&&y.replace(r,function(s,a,b,c){
if(b&&b>5){var t = a?'.'+(a*1+1):1;x = x*1+t;return s;}
if(b&&b==5){var t = a?c?'.'+(a*1+1):'.'+a:c?1:0;x = x*1+t;return s;}
if(a){x = x+'.'+a;}
return s;
});
return x;
}var foo = function(list){
while(list.length){
var n = list.shift();
document.write('xround('+n+') = '+xround(n)+'<br/>');
}
}foo(a);
</SCRIPT>
L@_@K
function greatThanDotFiveToCeil(number)
{
// Method 1:
//return ((number - Math.floor(number)) > 0.5) ? Math.ceil(number) : Math.floor(number); // Method 2:
var reg = /^\d+\.([6-9]\d*|5\d+)$/g;
return reg.test(number) ? Math.ceil(number) : Math.floor(number);
}document.write(greatThanDotFiveToCeil(1),"<br />"); // 1
document.write(greatThanDotFiveToCeil(1.9),"<br />"); // 2
document.write(greatThanDotFiveToCeil(0.51),"<br />"); // 1
document.write(greatThanDotFiveToCeil(0.4),"<br />"); // 0
L@_@K
/*
* Summary: 精度位数之后的小数位大于 5 则进位,小于等于 5 则舍弃。
*
* number: 给定的数字。
* iPrecision: 精度位数,即保留的小数位数。
*/
function greatThanDotFiveToCeil(number, iPrecision)
{
if (iPrecision) number = number * Math.pow(10,iPrecision);
else iPrecision = 0; // Method 1:
//return (((number - Math.floor(number)) > 0.5) ? Math.ceil(number) : Math.floor(number))/Math.pow(10,iPrecision); // Method 2:
var reg = /^\d+\.([6-9]\d*|5\d+)$/g;
return (reg.test(number) ? Math.ceil(number) : Math.floor(number))/Math.pow(10,iPrecision);
}document.write(greatThanDotFiveToCeil(0.6),"<br />"); // 1
document.write(greatThanDotFiveToCeil(1.95),"<br />"); // 2
document.write(greatThanDotFiveToCeil(0.5158),"<br />"); // 1
document.write(greatThanDotFiveToCeil(0.415),"<br />"); // 0
document.write("<br />");
document.write(greatThanDotFiveToCeil(0.6),"<br />"); // 1
document.write(greatThanDotFiveToCeil(1.95, 1),"<br />"); // 1.9
document.write(greatThanDotFiveToCeil(0.5158, 2),"<br />"); // 0.52
document.write(greatThanDotFiveToCeil(0.415, 2),"<br />"); // 0.41
n = 1.501
Math.floor(n + 0.5 - 1e-7) : 2
Math.floor(n + 0.49) : 1