当前位置: 首页 > 知识库问答 >
问题:

Javascript Nan错误:将字符串解析为int

邢小云
2023-03-14

参考文献

如何在JavaScript中将string转换为float?jQuery计算NaN

目标

从用户获取两个数值输入值。把第二个数除以第一个数。将结果乘以100,以百分比表示。将每个数字和结果添加到单个列表中。通过onClick命令调用函数getTextInput()。

背景

我主要和Java一起工作;我目前在一个数据结构班(二年级CS学生)。我的熟练程度是中级的。我对javascript的熟悉是基本的。

问题

NaN结果。我尝试了多种方法来实现这个任务;我解析了两个输入值并将它们分配给新变量,并且我将两个初始字符串输入解析为一个浮点值。然而,我仍然有一个问题,将这两个类型为int或string的数字的结果解析为一个浮点值。我应该解析为int类型参数的浮点值吗?当我将字符串值转换为int值时,程序将不接受输入值并崩溃。为什么会出现这种情况?我看了几个相关的帖子,但找不到任何提供我要找的信息的东西。做这件事最好的方法是什么?任何帮助或指导都非常感谢。多谢了。

>

  • 注意整个代码贴在底部。

    方法1-解析了两个要浮动的字符串。当我将percentOfNumbers和percentageList打印到控制台时,'nan'结果。

    var num1=document.getElementById(“numString1”);var num2=document.getElementById(“numString2”);

    percentOfNumbers=parseFloat(Num2/Num1*100);PercentageList.Push(数字百分比);PercentofNumbers.Value=“”;

    //将num1添加到List1中List1.push(num1.value);num1.value=“”;

    //将num2添加到List2中List2.push(num2.value);num2.value=“”;

    方法2-将每个文本输入解析为int值,将结果解析为float值。当我将percentOfNumbers和percentageList打印到控制台时,'nan'结果。

    var num1=document.getElementById(“numString1”);var num2=document.getElementById(“numString2”);

    var num1Parsed=parseInt(num1);var num2Parsed=parseInt(num2);

    percentOfNumbers=parseFloat(Num2ParseD/Num1Parsed*100);PercentageList.Push(数字百分比);PercentofNumbers.Value=“”;

    //将num1添加到List1 List1.push(num1parsed.value);num1parsed.value=“”;

    //将num2添加到List2.push(num2parsed.value);num2parsed.value=“”;

    //示例输入值:num1为2000,num2为2233

    //整个代码

    <!--
    To change this template, choose Tools | Templates
    and open the template in the editor.
    --><!DOCTYPE html>
    <html>
        <head>
            <title></title>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
        <script>
    
                // separate lists for repeat user input values for num1, num2, and percentageOfNumbers
                var List1 = [];
                var List2 = [];
                var percentageList = [];
                var percentOfNumbers = 0;
                var num1Parsed = 0;
                var num2Parsed = 0;
    
               function getTextInput() {
    
                    // retrieve two numbers of type 'String' from user and assign to appropriate var
                    var num1 = document.getElementById("numString1");
                    var num2 = document.getElementById("numString2");
    
                    // parse each string input number into an int
                    num1Parsed = parseInt(num1);
                    num2Parsed = parseInt(num2);
    
                    // divide second number by first number
                    // parse result and assign to percentOfNumbers var
                    // add percentOfNumbers value to percentageList
                    // reassign percentOfNumbers to ""
                    percentOfNumbers = (num2Parsed/num1Parsed * 100);
                    percentageList.push(percentOfNumbers);
                    percentOfNumbers.value = "";
    
                    // add num1 to List1
                    List1.push(num1Parsed.value);
                    num1Parsed.value = "";
    
                    // add num2 to List2
                    List2.push(num2Parsed.value); 
                    num2Parsed.value= "";
    
    
    
               }
    
        </script>
    
        </head>
        <body>
            <input id="numString1" type="text" name="input1" value="" /> 
            <input id="numString2" type="text" name="input2" value="" /> 
            <input id="inputField" type="button" name="search" value="compute" onClick="getTextInput();" /> 
        </body>
    </html>
    
  • 共有1个答案

    谭玉泽
    2023-03-14

    num1num2变量不包含字符串,它们包含DOM元素。

    使用value属性从输入字段中获取值:

    var num1 = document.getElementById("numString1").value;
    var num2 = document.getElementById("numString2").value;
    

    但是,Numbers没有value属性。您想推送数字本身:

    List1.push(num1Parsed);
    List2.push(num2Parsed);
    

    附带说明:使用parseint时请指定基数,因为使用基数8而不是10来分析前导为零的数字:

    num1Parsed = parseInt(num1, 10);
    num2Parsed = parseInt(num2, 10);
    
     类似资料:
    • 问题内容: 我有一个将存储Number对象的列表。该列表将通过分析字符串列表来填充,其中每个字符串都可以表示Number的任何子类。 如何将字符串解析为通用数字,而不是特定的整数或浮点数? 问题答案: 数字不能实例化,因为它是抽象类。我建议传入数字,但是如果您设置为字符串,则可以使用任何子类来解析它们, 要么 @请参阅NumberFormat

    • 问题内容: 我正在从数据库读取属性文件。我检查了,没有方法可以从实例中解析。有什么办法吗? 问题答案: 没错,没有从a读取方法,但实际上它有从or 读取的更通用的方法。 因此,如果您有某种方式将您的信息以任何一种方式呈现出来,那么您可以致电,即有效地逐个迭代字符的源。这感觉它应该存在,并且确实存在-java.io.StringReader。 那么,将其组合起来非常简单:

    • 问题内容: 我有一个格式的字符串时间。我没有找到任何格式来解析此字符串值。有什么办法可以将此字符串值转换为 Gotime.Time吗? 编辑-这不是重复的问题。我知道如何解析,但是我没有意识到我们可以使用除时间格式包中所列之外的任何布局。这个答案消除了我的疑惑。 问题答案: 这是完全,所以使用格式字符串(布局)。 例: 输出(在Go Playground上尝试): 引自以下文档的文档: 解析解析一

    • 问题内容: 我试图解析一个字符串,以分隔字符串中的列表。我目前有字符串: 有什么方法可以解析字符串,以便字典键是列表的第一个元素,而键的值是元素的下一个。例如: 问题答案: insted的的,你可以有列表: 您可以使用从字符串解析Python数据结构

    • 问题内容: 我有这个字符串:10,692,467,440,017.120(是一个数字)。 我想将其解析为BigDecimal。问题是我没有尝试过DecimalFormat和NumbeFormat。有什么帮助吗? 问题答案: 试试这个 如果要构建具有I18N支持的应用程序,则应使用 还请记住,它可能会引发a,因此您需要处理它(使用try / catch)或引发它,然后让程序的另一部分处理它

    • 问题内容: 我有一个弦 然后,我想将其解析为sqlDate。并将其插入数据库。 是否可以将该字符串解析为sqlDate?!?! 是的,SQL日期格式为“ yyyy-mm-dd” 问题答案: 用于将String日期解析为java.util.Date 然后使用millis将其转换为java.sql.Date