簡體   English   中英

從double到int的可能有損轉換?

[英]Possible lossy conversion from double to int?

這是我嘗試編譯代碼時收到的消息。 究竟是什么意思,我該如何解決這個問題?

practice.java:13: error: incompatible types: possible lossy conversion from double to int
            pattern(t, length);
                       ^
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
1 error

這是我的代碼:

public static void main(String[] args){
    Turtle t = new Turtle();
    t.delay(30);
    pattern2(t, 50.0, 3);

}

public static void pattern2(Turtle t, double length, int level){
    double random = Math.random();
    if (level == 0){
        pattern(t, length);
    } else{
        t.color(150/level, 150/level, 150/level);
        pattern2(t, length, level -1);
        t.penup();
        t.backward(length*4.5);
        t.left(60);
        t.forward(length);
        t.right(60);
        t.backward(length/random);
        t.pendown();
        pattern2(t, length/random, level-1);
    }
}

public static void pattern(Turtle t, int length){
    for (int i = 0; i < 5; i++) {
        triangle(t, length);
        t.forward(length); 
    } 
}

public static void triangle(Turtle t, int length){
    for (int i = 0; i < 3; i++) {
        t.forward(length);
        t.left(120);
    }
}

當你調用pattern(t, length);時,消息會顯示pattern(t, length); 在第13行,當它需要一個int長度時,你傳遞一個雙倍的長度。 如果您將模式和三角形方法更改為采用雙倍長度而不是int長度,則會修復錯誤。

編輯以顯式解釋錯誤您的方法采用一個int,它只能容納最多2^32 - 1 雙精度值可以保持最大值~ 1.7*10^308 (請參閱Double類中的MAX_VALUE常量以獲得更精確的限制)。 這意味着double可能具有值(精度),如果將其用作int,則會丟失。

pattern2()中的長度參數是double。 但是,在pattern()中,length是int。 Java不會自動從double轉換為int。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM