<script>
function GetValid(num,n)//num:数字;n:位数
{
return Math.round(num*Math.pow(10,n))/Math.pow(10,n);
}
alert(GetValid("0.123323",3));
</script>
function GetValid(num,n)//num:数字;n:位数
{
return Math.round(num*Math.pow(10,n))/Math.pow(10,n);
}
alert(GetValid("0.123323",3));
</script>
用:
numberstring.Precision(n)
{
//IE5.5支持toFixed,但是IE5.0不支持.兼容性.所以,IE5.0下自己实现.
return Math.round(this * Math.pow(10,len))/Math.pow(10,len)
}
//yyy为输入的域 传参数时用'',len为保留的有效位数
function xiao(yyy,len){
var name;
var cell = event.srcElement.parentElement;
var rowIndex = cell.parentElement.rowIndex; //当前行数
var obj=document.getElementsByName(yyy); if(rowIndex>0){
name=obj[rowIndex].value;//需要加多行的处理,name为yyy域的值
}
if(rowIndex==0){
try{
name=obj[rowIndex].value;
} catch(e){
name=obj.value; }
}
if(name!=""&&parseFloat(name)>=0){
if(name.indexOf('.')!=-1) {//有小数点的情况
var cut = name.split('.');//cut为存储整数和小数部分得数祖
var intpart=cut[0];//带有小数点数字得整数部分
var decimalpart=cut[1];//带有小数点数字得小数部分
if(intpart!=0){ //整数部分不适0
if(intpart.length>len){ //如果整数部分大=于有效位数
var place=intpart.length-len;//位差
var substringplace=intpart.length-place//应该截取的整数部分的位置
var intlen=intpart.substring(0,substringplace) //len长度的整数位数
name=intlen*10
}else
if(intpart.length==len){//如果整数部分等于有效位数
name=intpart;
}else
if(intpart.length<len){//如果整数部分小于俄有效位数
var place=len-intpart.length;
if(decimalpart.length>=place){
name=intpart+"."+ decimalpart.substring(0,place);
}
}
}else{ //整数部分是0
if(decimalpart.length>=len){
name=intpart+"."+decimalpart.substring(0,len)
}else{
name=name+"0"
}
}
}else if(name.indexOf('.')==-1){ //没有小数点的情况 9999
if(name.length>len){
var place=name.length-len
var substringplace=name.length-place
name=name.substring(0,substringplace)
name=name*10
}else if(name.length<len){
var place=len-name.length
name=name+"."
for(var i=0;i<place;i++){
name=name+"0"
}
}
}
form1.yyy.value=name
}
}
下面这个段是我自己做的:
<html><head>
<script language="Jscript">
function GetValid(num,n)//num:数字;n:位数
{
var num1,num2,num3;
num1=num/1;//数字字串转换为数字类型
num2=""+(num1.toFixed(0));//取得数字整数部份
num3=Math.pow(10,num2.length);//取得整数的位数。
num1=num1/num3;//将数字全部缩小为小于1的小数。
return num3*(num1.toFixed(n));//
}
</script>
</head><body>
<input name="www" value=133325.68>
<input name="eee" value=3>
<input type=button onclick="alert(GetValid(document.all.www.value,document.all.eee.value));" value="compute">
</body></html>
还有一点就是如果输入 0.12 保留有效数字后应该为 0.120.
呵
<html><head>
<script language="Jscript">
function GetValid(num,n)//num:数字;n:位数
{
var num1,num2,num3;
num1=num/1;//数字字串转换为数字类型
num2=""+(num1.toFixed(0));//取得数字整数部份
num3=Math.pow(10,num2.length);//取得整数的位数。
num1=num1/num3;//将数字全部缩小为小于1的小数。
num1=num3*(num1.toFixed(n));//根据指定有效位算出有效数字,但由于数字后面的“无效”数字“0”系统会自动取消,所以要做以下工作:
num2=""+num1;//字串化数字。
num3=(num2.indexOf(".")>-1)?num2.indexOf("."):0;//看看数字中是否包含小数点,如果包含,有效数字的总位数应加 1。
num2=(n/1-num2.length)>-1?num2+"00000000000000000000".substring(n/1-num2.length+num3):num2;//根据缺失的位数补回缺失的“0”
return num2;
}
</script>
</head><body>
<input name="www" value=133325.68>
<input name="eee" value=3>
<input type=button onclick="alert(GetValid(document.all.www.value,document.all.eee.value));" value="compute">
</body></html>
刚才又错了一个地方:
最后一版:<html><head>
<script language="Jscript">
function GetValid(num,n)//num:数字;n:位数
{
var num1,num2,num3;
num1=num/1;//数字字串转换为数字类型
num2=""+(num1.toFixed(0));//取得数字整数部份
num3=Math.pow(10,num2.length);//取得整数的位数。
num1=num1/num3;//将数字全部缩小为小于1的小数。
num1=num3*(num1.toFixed(n));//根据指定有效位算出有效数字,但由于数字后面的“无效”数字“0”系统会自动取消,所以要做以下工作:
num2=""+num1;//字串化数字。
num3=(num2.indexOf(".")>-1)?1:0;//看看数字中是否包含小数点,如果包含,有效数字的总位数应加 1。
num2+=(n/1-num2.length)>-1?"00000000000000000000".substring(0,n/1-num2.length+num3):"";//根据缺失的位数补回缺失的“0”
return num2;
}
</script>
</head><body>
<input name="www" value=133325.68>
<input name="eee" value=3>
<input type=button onclick="alert(GetValid(document.all.www.value,document.all.eee.value));" value="compute">
</body></html>
function getV(num)
{
if(num>=1000)
{
num1=(""+num).substring(0,3)+"0";
return num1;
}
if(num>=100)
{
num1=(""+num).substring(0,3)
return num1;
}if(num<1)
{
num1=(""+num+"00000").substring(0,5);
return num1;
}
if(num>=1&&num<10)
{
num1=num*100;
num1=(""+num1).substring(0,3);
num1=(num1/100).toFixed(2);
return num1;
}
if(num>=10&&num<100)
{
num1=num*10;
num1=(""+num1).substring(0,3);
num1=(num1/10).toFixed(1);
return num1;
}
}alert(getV(10))
</script>
这个应该没有任何问题了吧?<html><head>
<script language="Javascript">
function GetValid(num,n){
var num1,num2,num3,num4;
num1=""+num;//数字字串转换为字符。
if(num1.indexOf(".")>-1){
num4=num1.substring(0,num1.indexOf("."));
num1+="000000000000000000000000000000000000000000000";
}else{
num4=num1;//取整数部份。
num1+=".00000000000000000000000000000000000000000000";}
n=n/1; // n 转换为数值型数据。
num3=""; //初始化num3变量。
for(i=0;i<=num1.length;i++){
num2=num1.substring(i,i+1)//取一个字符。
n+=num2=="."?1:0;//如果有小数点“.”,并且小数点处的位置小于n的话,有效数位算上小数点。
num3+=num2;//重组字串。
i=i>=(n-1)?num1.length+2:i//如果有效数字位数已够,就退出循环。
}
num3+=num4.length>n?"000000000000000".substring(0,num4.length-n):"";//当不含小数的有效数字位数不够就补“0”
return num3;
}
</script>
</head><body>
<input name="www" value=9999.999>
<input name="eee" value=3>
<input type=button onclick="alert(GetValid(document.all.www.value,document.all.eee.value));" value="compute">
</body></html>
更好一点的:<html><head>
<script language="Javascript">
function GetValid(num,n){
var num1,num2,num3,num4;
num1=""+num;//数字字串转换为字符。
n=n/1;
if(num1.indexOf(".")>-1){
num4=num1.substring(0,num1.indexOf("."));
num1+="000000000000000000000000000000000000000000000";
num3=num1.substring(0,n+1); }else{
num4=num1;//取整数部份。
num1+=".00000000000000000000000000000000000000000000";
num3=num1.substring(0,n);}
num3+=num4.length>n?"000000000000000".substring(0,num4.length-n):"";//当不含小数的有效数字位数不够就补“0”
return num3;
}
</script>
</head><body>
<input name="www" value=9999.999>
<input name="eee" value=3>
<input type=button onclick="alert(GetValid(document.all.www.value,document.all.eee.value));" value="compute">
</body></html>
合起来if(num>=100)
{
num1=""+num;
bb="";
len=num1.length;
for(var i=1;i<len-3;i++)
bb=bb+"0";
num1=(""+num).substring(0,4)+bb;
return num1;
}
{
num1=""+num;
==>
if(num>=100)
{ num1=(""+num).substring(0,(""+num).indexOf("."));
==>
num1=(""+num).split(".")[0];
<script language="Javascript">
function GetValid(num,n){
var num1,num2,num3,num4;
num1=""+num;
n=n/1;
num2="000000000000000000000000000000000000000000000000";
if(num1.indexOf(".")>-1){
num4=num1.substring(0,num1.indexOf(".")).length;//取整数部份位数。
num1+=num2;
n=n<=num4?n:n+1;
}else{
num4=num1.length;
num1+="."+num2;}
num3=num1.substring(0,n); num3+=num4>n?num2.substring(0,num4-n):"";//当不含小数的有效数字位数不够就补“0”
return num3;
}
</script>
</head><body>
<input name="www" value=9999.999>
<input name="eee" value=3>
<input type=button onclick="alert(GetValid(document.all.www.value,document.all.eee.value));" value="compute">
</body></html>