【问题标题】:Cannot add two numbers correctly without using parseFloat in JavaScript如果不使用 JavaScript 中的 parseFloat,则无法正确添加两个数字
【发布时间】:2013-04-20 07:43:11
【问题描述】:

我遇到了这个问题。它使用 parseFloat 或 parseInt 添加数字。 如果 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>

【问题讨论】:

  • 这是因为 + 运算符也用于字符串,而 - 和 * 运算符则没有。使用像这样的松散类型语言你会得到这种行为。
  • 我很惊讶没有人推荐优秀的 jQuery 算术插件。

标签: javascript jquery add


【解决方案1】:

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

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

如果您使用parseFloat($('#txt1').val() + $('#txt2').val())+ 不能用作算术运算符,而是用作字符串连接。因此,您将两个字符串连接起来并在之后进行转换,这会产生错误的结果。

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多