Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 双倍数字_Java_Double_Type Conversion_Type Mismatch - Fatal编程技术网

Java 双倍数字

Java 双倍数字,java,double,type-conversion,type-mismatch,Java,Double,Type Conversion,Type Mismatch,如何在Java中将Double转换为数字,如下面的代码所示 public Number parse(String text, ParsePosition status) { // find the best number (defined as the one with the longest parse) int start = status.index; int furthest = start; double bestNumber = Double.NaN;

如何在Java中将Double转换为数字,如下面的代码所示

public Number parse(String text, ParsePosition status) {
    // find the best number (defined as the one with the longest parse)
    int start = status.index;
    int furthest = start;
    double bestNumber = Double.NaN;
    double tempNumber = 0.0;
    for (int i = 0; i < choiceFormats.length; ++i) {
        String tempString = choiceFormats[i];
        if (Misc.regionMatches(start, tempString, 0, tempString.length(), text)) {
            status.index = start + tempString.length();
            tempNumber = choiceLimits[i];
            if (status.index > furthest) {
                furthest = status.index;
                bestNumber = tempNumber;
                if (furthest == text.length()) break;
            }
        }
    }
    status.index = furthest;
    if (status.index == start) {
        status.errorIndex = furthest;
    }
    int c= 0;
    return new Double(bestNumber); 
}
实际上,此代码属于
java.text
包中的
ChoiceFormat.java
类。

使用casting

Double d=new Double(2);
Number n=(Number)d;
就你而言

Double d=new Double(bestNumber);
Number n=(Number)d;

return n;
使用铸造

Double d=new Double(2);
Number n=(Number)d;
就你而言

Double d=new Double(bestNumber);
Number n=(Number)d;

return n;
是的一个子类。因此,如果从返回
java.lang.Number
的方法返回
java.lang.Double
,则发布的代码不应显示任何编译错误

正如Jon Skeet指出的,“你在某处有不同的双精度类型或不同的数字类型”。请仔细检查您是否正在使用
java.lang.double
java.lang.Number

是的子类。因此,如果从返回
java.lang.Number
的方法返回
java.lang.Double
,则发布的代码不应显示任何编译错误


正如Jon Skeet指出的,“你在某处有不同的双精度类型或不同的数字类型”。请仔细检查您是否正在使用
java.lang.double
java.lang.Number

,这表明您在某处使用了不同的
double
类型或不同的
Number
类型。您可以尝试使用声明类型
java.lang.Number
返回新的java.lang.Double(bestNumber)使其显式化我在日食中没有遇到任何这样的错误,你可以把它放在某个地方,表明你有一个不同的
Double
类型或一个不同的
Number
类型。您可以尝试使用声明类型
java.lang.Number
返回新的java.lang.Double(bestNumber)使其显式化我在日食中没有收到任何这样的错误,你可以把它放在那里,但是没有必要这样做。或者更确切地说,如果这段代码能够工作,那么原始代码应该能够工作。我在它显示“无法将表单双精度转换为数字”之前尝试过它。@Sanjaya Double是数字的子类,但是应该没有必要这样做。或者更确切地说,如果这段代码能够工作,那么原始代码应该可以工作。我在它显示“无法将form Double转换为Number”之前尝试过它。@Sanjaya Double是Number的子类