<script>
alert(qswhMul(56.10,23.12));
function qswhMul(n1,n2){
var m=0,s1=n1.toString(),s2=n2.toString();
try{m+=s1.split(".")[1].length}catch(e){}
try{m+=s2.split(".")[1].length}catch(e){}
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
}
</script>

解决方案 »

  1.   

    IE5.5+用
    alert(qswhMul(56.10,23.12).toFixed(2));以下用:
    <script>
    function Number.prototype.Fixed(num){
    with(Math){
    var m=pow(10,Number(num))
    return round(this*m)/m;
    }
    }
    alert(qswhMul(56.10,23.12).Fixed(2));
    function qswhMul(n1,n2){
    var m=0,s1=n1.toString(),s2=n2.toString();
    try{m+=s1.split(".")[1].length}catch(e){}
    try{m+=s2.split(".")[1].length}catch(e){}
    return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
    }
    </script> 
      

  2.   

    <script>
    var f = 11.20000000000000000001;
    alert(f.toFixed(3));
    </script>
      

  3.   

    JavaScript是客户端的语言,有这样的缺陷也不奇怪,我们只好谅解谅解了!
      

  4.   

    仅对加减乘的精度进行控制,无除法的。
    var mCurrentValue = 0.0;
    mCurrentValue = parseFloat(str1);
    var mValue=0.0;
    mValue = parseFloat(str2);
    var degree1 = str1.toString().lastIndexOf(".");
    if (degree1 == -1)
    degree1 = 0;
    else
    degree1 = str1.length - degree1 - 1;
    var degree2 = str2.toString().lastIndexOf(".");
    if (degree2 == -1)
    degree2 = 0;
    else
    degree2 = str2.length - degree2 - 1;var degree=0;
    switch(mCalulatorNum[0])
    {
    case "+":
    {
    mCurrentValue = mCurrentValue + mValue;
    degree = (degree1>degree2)?degree1:degree2;
    mCurrentValue = mCurrentValue.toFixed(degree);
    break;
    }
    case "-":
    {
    mCurrentValue = mCurrentValue - mValue;
    degree = (degree1>degree2)?degree1:degree2;
    mCurrentValue = mCurrentValue.toFixed(degree);
    break;
    }
    case "*":
    {
    mCurrentValue = mCurrentValue * mValue;
    //处理精度
    var degree = degree1+degree2;
    mCurrentValue = mCurrentValue.toFixed(degree);
    break;
    }
    }