如果不在JavaScript中使用parseFloat,则无法正确添加两个数字

时间:2013-04-20 07:43:11

标签: javascript jquery add

我遇到了这个问题。它使用parseFloat或parseInt添加数字。 IF textbox1值为4,textbox2值为2,然后输出为(参见脚本)

我怀疑是添加单独

的原因
  

parseFloat($('#txt1').val()) + parseFloat($('#txt2').val())

给出正确的值,但

  

parseFloat($('#txt1').val() + $('#txt2').val())

没有给出正确的值,而

  • parseFloat($('#txt1').val() - $('#txt2').val())
  • parseFloat($('#txt1').val() / $('#txt2').val())
  • parseFloat($('#txt1').val() * $('#txt2').val())

正在给出正确的价值。 它简单但我找不到解决方案。

===== jQuery的

   function Calculate() {                                              //--> Output
     $('#lbl1').html(parseFloat($('#txt1').val() + $('#txt2').val())); //--> 42
     $('#lbl2').html(parseFloat($('#txt1').val()) + parseFloat($('#txt2').val())); //--> 6
     $('#lbl3').html(parseFloat(4 + 2));                               //--> 6

     $('#lbl4').html(parseFloat($('#txt1').val() - $('#txt2').val())); //--> 2
     $('#lbl5').html(parseFloat($('#txt1').val() * $('#txt2').val())); //--> 8
     $('#lbl6').html(parseFloat($('#txt1').val() / $('#txt2').val())); //--> 2
  }

===== HTML

<table>
        <tr>
            <td>
                <input type="text" id="txt1" />
            </td>
            <td>
                <input type="text" id="txt2" />
            </td>
        </tr>
        <tr>
            <td>
                <input type="button" value="Calculate"  onclick="Calculate()" />
            </td>
            <td>
                <label id="lbl1">
                </label>
                |
                <label id="lbl2">
                </label>
                |
                <label id="lbl3">
                </label>
                |
                <label id="lbl4">
                </label>
                |
                <label id="lbl5">
                </label>
                |
                <label id="lbl6">
                </label>
            </td>
        </tr>
    </table>

2 个答案:

答案 0 :(得分:10)

$.val()返回一个字符串值。

因此,在您的第一个示例中,您将两个返回的字符串转换为数字,并且计算正常。

如果使用parseFloat($('#txt1').val() + $('#txt2').val())+不能作为算术运算符,而是作为字符串连接。所以你连接两个字符串并在之后转换它们,这会产生错误的结果。

使用-的示例将起作用,因为没有使用-的字符串操作,因此所有值都会在应用操作之前隐式转换为数字

答案 1 :(得分:1)

$('#txt1').val() + $('#txt2').val()它给出了字符串值

你不能在字符串上使用 - ,*,/ operator

parseFloat($('#txt1').val()), parseFloat($('#txt2').val())返回的数字不是字符串