这是javascript本身的问题。
可以这样:先转化成整数再运算

解决方案 »

  1.   

    对,好象没有什么好的办法。
    //保留小数位
    //amount:被转换数
    //noDot:  小数位
    function roundDecimal(amount,noDot)
    {
        var vPos;
    var vDotAdd ;
    var noDotStr=noDot.toString();
    switch(noDotStr)
    {
    case "0":
    vDotAdd = 0.5;
    break;
    case "1":
    vDotAdd = 0.05;
    break;
    case "2":
    vDotAdd = 0.005;
    break;
    case "3":
    vDotAdd = 0.0005;
    break;
    case "4":
    vDotAdd = 0.00005;
    break;
    case "5":
    vDotAdd = 0.000005;
    break;
    case "6":
    vDotAdd = 0.0000005;
    break;
    case "7":
    vDotAdd = 0.00000005;
    break;
    case "8":
    vDotAdd = 0.000000005;
    break;
    case "9":
    vDotAdd = 0.0000000005;
    break;
    default:
    vDotAdd = 0.005;
    }
    if (parseInt(amount)>0)
    amount = parseInt(amount) + vDotAdd;
    else
    amount = parseInt(amount) - vDotAdd ;
    amount = String(amount);
    vPos = amount.lastIndexOf(".");
    amount = amount.substr(0,vPos+parseInt(noDot)+1);
    return amount;
    }
      

  2.   

    oh my god ,我也遇到过这样的问题,
    我是先放大取整数,结构再缩小的...
      

  3.   

    javascript:alert((2.3*4.7).toFixed(2))