找个0舍1入的js

找工作中 2012-08-08 08:47:10
如:

function digitForIgnore(digit,count)
{
//方法体
}

运行效果:

digitForIgnore(1.234,1)=1.3
digitForIgnore(1.234,2)=1.24

digitForIgnore(1.20034,1)=1.3



求教方法体里应该怎么写?谢谢
...全文
244 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
找工作中 2012-08-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
alert(digitForIgnore(1.234,1));//1.3
alert(digitForIgnore(1.234,2));//1.24
alert(digitForIgnore(1.20034,1));//1.2 不应该是1.3
[/Quote]
我也觉得是1.2,输入1.2000000003怎么办呢,人家要这样没办法,不是我主观想怎么样就怎么样...
ajccom 2012-08-09
  • 打赏
  • 举报
回复
还是5楼方便直观
不訴離傷 2012-08-09
  • 打赏
  • 举报
回复
逻辑

1. Math.floor(1.234*Math.pow(10,1)+1)/Math.pow(10,1) = 1.3
2. Math.floor(1.234*Math.pow(10,2)+1)/Math.pow(10,2) = 1.24
3. .................

所以:
var result = Math.floor(digit*Math.pow(10,count)+1)/Math.pow(10,count)


算法就 第一个数乘以10的count次方,然后结果+1后,再取整数(舍去小数),然后除以count次方即可!

中间还需要考虑到数字的异常情况。

scscms太阳光 2012-08-08
  • 打赏
  • 举报
回复
<script language="javascript">
function digitForIgnore(digit,count)
{
digit=digit.toString();
var str="";
if(digit.indexOf(".")!=-1){
var n=digit.split(".");
var b=n[1];
for(var i=0;i<count;i++){
b+="0";
}
str=b.substring(0,count);
if(b.substring(count,count+1)!=0){
str++
}
str=n[0]+"."+str;
}else{
for(var i=1;i<=count;i++){
str+="0";
}
str=digit+"."+str;
}
return str;
}

alert(digitForIgnore(1.234,1));//1.3
alert(digitForIgnore(1.234,2));//1.24
alert(digitForIgnore(1.20034,1));//1.2 不应该是1.3
alert(digitForIgnore(1.2,3));//1.200
alert(digitForIgnore(1.211,3));//1.211
alert(digitForIgnore(23,3));//23.000
</script>
shiulin 2012-08-08
  • 打赏
  • 举报
回复

function digitForIgnore(digit,count)
{
return isNaN(digit) || isNaN(count) ? NaN : Math.ceil(digit*Math.pow(10,count))*Math.pow(10,-count)
}
似梦飞花 2012-08-08
  • 打赏
  • 举报
回复
<script type="text/javascript">
(function(){
if(!window['Z']){
window['Z']={};
}
function round(num,prec){
var a=9;
for(var i=0;i<=prec;i++){
a=a/10;
}
num+=a;
var start=(num+"").indexOf(".");
var end=start+prec+1;
num=(num+"").substring(0,end);
return num;
}
window['Z']['round']=round;
}
)();
alert(Z.round(1.234,1));
alert(Z.round(1.234,2));
alert(Z.round(1.20034,1));
</script>
不明白你的意思
为什么digitForIgnore(1.20034,1)=1.3啊
不是1.2后是0应该是1.2吗?
scscms太阳光 2012-08-08
  • 打赏
  • 举报
回复
<script language="javascript">
function digitForIgnore(digit,count)
{
digit=digit.toString();
var str="";
if(digit.indexOf(".")!=-1){
var n=digit.split(".");
var b=n[1];
if(b.length>count)
{
str=b.substring(0,count);
if(b.substring(b.length-count,b.length-count+1)!=0){
str++
}
str=n[0]+"."+str;
}else{
for(var i=0;i<count-b.length;i++){
str+="0";
}
str=digit+str;
}
}else{
for(var i=1;i<=count;i++){
str+="0";
}
str=digit+"."+str;
}
return str;
}
alert(digitForIgnore(1.234,1));//1.3
alert(digitForIgnore(1.234,2));//1.24
alert(digitForIgnore(1.20034,1));//1.3
alert(digitForIgnore(1.2,3));//1.200
alert(digitForIgnore(1.211,3));//1.211
alert(digitForIgnore(23,3));//23.000
</script>

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧