webForumDet fria alternativet

Math problem!!

Java

3 svar · 322 visningar · startad av eriwi

Medlem sedan dec. 20048 inlägg
Frågan#1

Hej

Jag försöker överföra följande formel till ett java program:

1.15*((x2-x1)^1,78+(y2-y1)^1,78))^1/1,78

Jag trodde att koden nedanför skulle fungera men så är inte fallet. Jag tror det beror på att man inte kan upphöja tal till decimaltal, utan bara heltal.
Är dock inte helt säker på detta! Är det någon som vet hur man får detta att fungera.

double Distance(delivery d1, delivery d2)
{
double av = (Math.pow((d1.x - d2.x), 1.78) + Math.pow((d1.y - d2.y), 1.78));

double distance = (Math.pow(av, 0.5617));
return distance;
}

Alla funderingar mottages gärna, mvh Erik

Medlem sedan aug. 20039 340 inlägg
#2

Jag ser följande fel:

  1. Ibland blir d1.x - d2.x negativt. Detta är inte trevligt om du upphöjer till ett reellt tal. Du bör ta absolutbeloppet av skillnaden så att du vet att det är positivt.
    Detta fel uppstår däremot inte om du kvadrerar (x^2) eftersom tecknet då försvinner.
  2. Du multiplicerar aldrig resultatet med 1.15. Detta gör att den garanterat ger fel svar :)
  3. Du kan upphöja tal till annat än heltal. Det är tom så Java föredrar att du gör. Java vill nämligen att du skickar med double till pow. Genom att sätta ett d efter tal som en gest till kompilatorn att talen är av typ double.

Sen en kommentar: Du behöver inte ha parenteser ytterst runt ett uttryck.

double Distance(delivery d1, delivery d2) 
{
    double av = Math.pow(Math.abs(d1.x - d2.x), 1.78d) + Math.pow(Math.abs(d1.y - d2.y), 1.78d);
    
    double distance = 1.15d * Math.pow(av, 0.5617d);
    return distance; 
}

Tips: Använd gärna kod-taggen på forumet, så ser koden snyggare ut!

Medlem sedan dec. 20048 inlägg
#3

Tack

Tackar tackar nu blev jag glad :)

Medlem sedan aug. 20039 340 inlägg
#4

Ett litet tips: Klicka på "Acceptera som slutgiltigt svar" vid det inlägg som löste ditt svar :)

406 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
152 ms — deklarationer (db)
125 ms — hämta statistik (db)
126 ms — hämta tråd, inlägg och bilagor (db)
153 ms — ändringar (db)