下面的代码中想实现的是,如果送货总金额大于订单总金额时给出提醒。但奇怪的是LabTotalSendPrice取得100,LabTotalPrice取得62,明明送货总金额大于订单总金额,但为什么ts>tp是false呢?<script language="javascript">
function test()
{
var tp,ts;
tp = parseFloat(document.all.LabTotalPrice.innerText).toFixed(2)     //取得订单总金额
ts = parseFloat(document.all.LabTotalSendPrice.innerText).toFixed(2); //取得送货总金额
        
alert("订单总金额:" +tp + " 送货总金额" + ts) if(ts>tp)
{
       alert("送货总金额已大于订单总金额!");
}
}
</script>
订单总金额:<span id="LabTotalPrice">62</span>元&nbsp;
送货总金额:<span id="LabTotalSendPrice">100</span>元
<input type="button" id="btn" name="btn" value="测试" onclick="test()">

解决方案 »

  1.   

    不要用toFixed, 用了就转成字符串型了,6 大于 1 就得不到正确的结果了.
      

  2.   

    function test()
    {
        var tp,ts;
        tp = parseFloat(document.all.LabTotalPrice.innerText) //取得订单总金额
        ts = parseFloat(document.all.LabTotalSendPrice.innerText); //取得送货总金额
        alert("订单总金额:" +tp.toFixed(2) + " 送货总金额" + ts.toFixed(2))    if(ts > tp)
        {
            alert("送货总金额已大于订单总金额!");
        }
    }
      

  3.   

    蹭分
    一楼已经说了
    这样试试就知道:
    alert(12 > 3); // true
    alert("12" > "3"); // false
      

  4.   

    parseFloat 方法
    返回由字符串转换得到的浮点数。 parseFloat(numString)必选项 numString 参数是包含浮点数的字符串。 说明
    parseFloat 方法返回与 numString 中保存的数相等的数字表示。如果 numString 的前缀不能解释为浮点数,则返回 NaN (而不是数字)。
    toFixed 方法
    返回一个字符串,代表一个以定点表示法表示的数字。numObj.toFixed([fractionDigits])参数
    numObj必选项。一个 Number 对象。fractionDigits可选项。小数点后的数字位数。其值必须在 0 – 20 之间,包括 0 和 20。说明
    toFixed 方法返回一个以定点表示法表示的数字的字符串形式。该字符串中小数点之前有一位有效数字,而且其后必须包含 fractionDigits 数字。如果没有 fractionDigits 参数,或者该参数为 undefined,toFixed 方法假定该值为 0。
      

  5.   

    谢谢楼上们的解答了,我受教了,8楼的解释是我最需要的,这就是scdn,谢谢。
    看帖必回贴。今天比昨天强,明天比今天还要强。
      

  6.   

     parseFloat 转化后,小数后面会带出很多位,比如60.0000000016 这样有没有影响啊?
      

  7.   


    这速度,比刘翔还快啊`` 如果都是整数,可以用parseInt