<script>
function calculate(objNumField,objPriceField,objSumField,dec)
 {
   var objNum = eval("document.all." + objNumField + ";");
   var objPrice = eval("document.all." + objPriceField + ";");
   var objSum = eval("document.all." + objSumField + ";");
   try
   {
      var Num   = new Number(objNum.value);
      var Price = new Number(objPrice.value);
      if(isNaN(Num)||isNaN(Price))
      {
         alert('&Icirc;&THORN;&ETH;§&Ecirc;&yacute;×&Ouml;!');
         return false;
      }
  if (dec>18) { alert("&ETH;&iexcl;&Icirc;&raquo;&Ecirc;&yacute;&sup2;&raquo;&Auml;&Uuml;&sup3;&not;&sup1;&yacute;18&Icirc;&raquo;"); }
  var zerostr = "00000000000000000000";
  var tmp_num = Math.round(Num * Price*Math.pow(10,dec))/Math.pow(10,dec);
      //var tmp_num = Math.round(Num * Price*Math.pow(10,2))/Math.pow(10,2); 
  var tmp_str = tmp_num.toString();
  var re_num = tmp_str;
  var pos = (tmp_str.indexOf(".")==-1)? 0 : tmp_str.indexOf(".");
  if (dec>0){
 if (pos==0) { re_num = re_num+"."+zerostr.substring(0,dec); }
 else {
 if ((tmp_str.length-pos-1)<dec){
re_num = re_num+zerostr.substring(0,dec-(tmp_str.length-pos-1));
 }
 }
  }
  //objSum.value = round(Num*Price,dec);
  objSum.value = re_num;   }
   catch(e)
   {
   }      
   return true;
}
</script>
<input id="price" value="1.23455667" type=text>
<input id="quty" value="1.23455667" type=text >
<input id="fmone" type=text onblur="alert(calculate('quty','price','fmone',2))">

解决方案 »

  1.   

    <script>
    function calculate(objNumField,objPriceField,objSumField,dec)
     {
       var objNum = eval("document.all." + objNumField + ";");
       var objPrice = eval("document.all." + objPriceField + ";");
       var objSum = eval("document.all." + objSumField + ";");
       try
       {
          var Num   = new Number(objNum.value);
          var Price = new Number(objPrice.value);
          if(isNaN(Num)||isNaN(Price))
          {
             alert('无效数字!');
             return false;
          }
      if (dec>18) { alert("小位数不能超过18位"); }
      var zerostr = "00000000000000000000";
      var tmp_num = Math.round(Num * Price*Math.pow(10,dec))/Math.pow(10,dec);
          //var tmp_num = Math.round(Num * Price*Math.pow(10,2))/Math.pow(10,2); 
      var tmp_str = tmp_num.toString();
      var re_num = tmp_str;
      var pos = (tmp_str.indexOf(".")==-1)? 0 : tmp_str.indexOf(".");
      if (dec>0){
     if (pos==0) { re_num = re_num+"."+zerostr.substring(0,dec); }
     else {
     if ((tmp_str.length-pos-1)<dec){
    re_num = re_num+zerostr.substring(0,dec-(tmp_str.length-pos-1));
     }
     }
      }
      //objSum.value = round(Num*Price,dec);
      objSum.value = re_num;   }
       catch(e)
       {
       }      
       return true;
    }
    </script>
    <input id="price" value="1.23455667" type=text>
    <input id="quty" value="1.23455667" type=text >
    <input id="fmone" type=text onblur="alert(calculate('quty','price','fmone',2))">Round(1.23455667 * 1.23455667 * 100) / 100 = 1.52
      

  2.   

    <script>
    if(!Number.prototype.toFixed)
      {Number.prototype.toFixed= function(num)
        {with(Math)return round(this.valueOf()*pow(10,num))/pow(10,num);
        }
      }var a=1.2156756
    alert(a.toFixed(2))
    </script>