比如
var t = 99.99;
document.write(t/100);
显示0.9998999999999999有什么办法保留小数点2位。 并且四舍五入
t.toFixed(2)是四舍五入的?不想得到小数点后substring取。有什么好办法。谢谢

解决方案 »

  1.   

    很久没用js了 原来用的也不是太多 
    不知道api有没有类似的方法
    但是如果没有可以用笨一点的方法
    当成字符串然后再来操作 用正则表达式
      

  2.   


    function FormatNumber(srcStr,nAfterDot)        //nAfterDot小数位数
           {
              var srcStr,nAfterDot;
              var resultStr,nTen;
              srcStr = ""+srcStr+"";
              strLen = srcStr.length;
              dotPos = srcStr.indexOf(".",0);
              if (dotPos == -1){
                resultStr = srcStr+".";
                for (i=0;i<nAfterDot;i++){
                  resultStr = resultStr+"0";
                }
                return resultStr;
              }
              else{
                if ((strLen - dotPos - 1) >= nAfterDot){
                  nAfter = dotPos + nAfterDot + 1;
                  nTen =1;
                  for(j=0;j<nAfterDot;j++){
                    nTen = nTen*10;
                  }
                  resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;
                  return resultStr;
                }
                else{
                  resultStr = srcStr;
                  for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){
                    resultStr = resultStr+"0";
                  }
                  return resultStr;
                }
              }
            } 
      

  3.   


    var num = 136589.32658+"";
    var index = num.indexOf(".");
    var result = num.substring(0,index+3);
      

  4.   

    谢谢楼上,如果用substring取。我就不来这里发帖了
      

  5.   


    <script language="javascript">
    var a=123.456
    var b=parseInt(a*100,10)/100
    alert(b);
    </script>
      

  6.   

    要比较精确的计算结果的话,就最好先将加减乘除的参数变大,变为整数,然后在缩小相应的倍数,这里给你一个乘法的js,其他的你自己写吧,思路就是放大参数的倍数,使其成为整数,然后操作,最后缩小相同的倍数/**
    * js乘法:两个浮点数的乘积会出现误差,这个函数返回较为精确的结果。(不一定是绝对准确)
    */
    function Multiplication(arg1,arg2){ 
    var m=0; //扩大后的两数相乘比初始值相乘扩大的倍数
    var s1=arg1.toString();
    var s2=arg2.toString(); 

    try{
    //获取第一个参数的小数部分长度,去掉小数点后,小数部分的长度就是初始值的小数点右移的位数
    m+=s1.split(".")[1].length;
    }catch(e){
    }

    try{
    ////获取第二个参数的小数部分长度,去掉小数点后,小数部分的长度就是初始值的小数点右移的位数
    m+=s2.split(".")[1].length;
    }catch(e){


    //返回值:将参数的小数点去掉然后相乘,最后除以Mah.pow(10,m)
    return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10,m) ;


      

  7.   

    var t = 65.32*100;
    竟然不是6532.js真是精深