【问题标题】:How do I know if a String is a number in scientific notation?我如何知道字符串是否是科学计数法中的数字?
【发布时间】:2013-06-06 22:52:48
【问题描述】:

我知道如何检查字符串是否为数字。但是如何检查字符串是否为数字且字符串是否为科学计数法?

这是我尝试过的:我编写了一个算法来简单地检查字符串是否包含“E”,但我不确定这是否足够。

我正在寻找这样的方法实现:

public boolean isScientificNotation(String numberString) {

    //show me the implementation

}

【问题讨论】:

    标签: java scientific-notation


    【解决方案1】:

    您可以使用BigDecimal。符号格式本身的验证是使用简单的contains 表达式完成的

    static boolean isScientificNotation(String numberString) {
    
        // Validate number
        try {
            new BigDecimal(numberString);
        } catch (NumberFormatException e) {
            return false;
        }
    
        // Check for scientific notation
        return numberString.toUpperCase().contains("E");   
    }
    

    【讨论】:

    • 对于像 1113E 或 1343e3 这样的字符串,实际上任何字符串都只有一个“e”或“E”。无法识别正确性。它应该是一个普通的字符串,但会以 ScientificNotation 的形式返回。
    【解决方案2】:

    试试这个:

    if(containsE(str))   //call your method to check if "e" is present
    {
        try
        {
            Double.parseDouble(str);
            return true;
        }
        catch(NumberFormatException e)
        {
            return false;
        }
    }
    else
        return false;
    

    【讨论】:

    • 只是为了确定,containsE 的含义是什么?你在做str.contains("E");吗?我有点担心,因为您在评论中写信检查“e”。我的测试总是显示大写的 E 是有效的。
    • @tieTYT 当我说containsE(str) 时,我指的是你说你在问题中写的算法。
    • @tieTYT 您可以在字符串上执行toUpperCase(),然后检查E
    • 代码片段的开头可能只是if (!containsE(str)) return false;
    • 我的问题是询问containsE 的实现。我知道这是微不足道的,但如果你告诉我那个 impl 并且它是正确的,我会把你的标记为答案。
    【解决方案3】:
    private  boolean isScientificNotation(String numberString) {
    
        // Validate number
        try {
            new BigDecimal(numberString);
        } catch (NumberFormatException e) {
            return false;
        }
    
        // Check for scientific notation
        return numberString.toUpperCase().contains("E") && (numberString.charAt(1)=='.' || numberString.charAt(2)=='.');   
    }
    

    稍作修改。如果字符串是规范化的科学记数法,它应该有一个点/“。”排在第二位,并且在某个地方也有 E/e。

    【讨论】:

    • 负数怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2019-12-30
    • 1970-01-01
    • 2011-12-27
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多