webForumDet fria alternativet

Math problem!!

3 svar · 322 visningar · startad av eriwi

eriwiMedlem sedan dec. 20048 inlägg
#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

nitro2k01Medlem sedan aug. 20039 342 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!

eriwiMedlem sedan dec. 20048 inlägg
#3

Tack

Tackar tackar nu blev jag glad :)

nitro2k01Medlem sedan aug. 20039 342 inlägg
#4

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

129 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)