不知道我是如何完成的學校不能夠解決這個小問題...簡單的代碼 - 錯誤讓我瘋了......浮到2個字節,回
下面的代碼會產生意想不到的輸出:
public Color getPixel(int x, int y){
return img.getPixelReader().getColor(x, y);
}
public float colorToHeight(Color c){
int b =(int)(c.getBlue()*256);
int r =(int)(c.getRed()*256*256);
float h = (b+r)/2;
h-=10000;
return h;
}
public Color heightToColor(float h){
h+=10000;
h*=2;
double r= (int)(h/(256));
double b = h-(r*256);
return new Color(r/256,0,b/256,1f);
}
public void debugPixel(int x, int z){
System.out.println("test 424->Color: "+heightToColor(424f));
System.out.println("test Color->424: "+colorToHeight(heightToColor(424f)));
System.out.println("test Color->424->Color: "+heightToColor(colorToHeight(heightToColor(424f))));
System.out.println("check A: "+getPixel(x,z) + " Height: "+colorToHeight(getPixel(x,z)));
System.out.println("check B: "+heightToColor(colorToHeight(getPixel(x,z))));
System.out.println("check C: "+getPixel(x,z));
}
輸出:
test 424->Color: 0x510070ff
test Color->424: 424.0
test Color->424->Color: 0x510070ff
check A: 0x5200cbff Height: 638.0
check B: 0x53001cff
check C: 0x5200cbff
我絕對不找原因【檢查B]的原因= [查看A] ....謝謝!
注意'float <-> int'轉換,包括整數除法'/'。這是相當肯定**值不會相同。 – charlie
哪個'Color'類是這個? (I假設這個類做內部一些夾緊,尤其是導致「紅色」成分,這很可能超出範圍,將被鉗位到[0.0,1.0]) – Marco13
...我想我發現它....認爲這是一個愚蠢的錯誤,正確的INT-漂浮的色彩(INT)Math.round((c.getBlue()* 255)),發現它的顏色類中。現在這個錯誤在我的支票中只有1,所以在某處會出現舍入錯誤。 – SalkinD