Välkommen till linuxportalen.se!

Linuxportalen.se är Sveriges största och aktivaste webbplats för användare av öppen- och fri programvara.

Du besöker Linuxportalen.se som gäst vilket begränsar din möjlighet att använda webbplatsens alla funktioner. Genom att registera dig som medlem får du inte bara möjlighet att söka bland webbplatsens innehåll, skapa nya och delta i befintliga diskussioner, skapa din egen blogg, kommunicera med andra medlemmar genom privata meddelanden och delta i omröstningar. Du får också tillgång till Veckans Kadavro - en seriestrip unikt skapad för Linuxportalen.se!

Registeringen sker snabbt och är helt kostnadsfri - tveka inte, bli medlem idag!

Matematiken stämmer inte (Pythonscript) Lüst

Jag leker lite med ett pythonscript som skall utföra en uträkning baserat på två uppgifter som hämtas från användaren. Jag vet att koden fungerar i övrigt då den räknar ut, men jag får det inte att stämma med resultatet.

Jag vill att (värde1*värde1)/värde2 skall bli rätt. Det är i alla fall den rätta matematiska formeln. Jag har testat alla möjliga varianter på den i python men resultatet blir fel hela tiden. Vad jag tror så missar python () eller så använder jag dom fel. För resultatet blir samma som man skulle slå in ovanstående formel i miniräknaren utan just (). Jag har provat att byta plats och jag har provat både / och // som är två varianter på division i Python.

Jag skippar att ta med pythonkoden då jag testat andra utträkningar och dessa stämmer. Det är just den formeln som inte vill sig. Varken på det hållet eller om jag gör värde2/(värde1*värde1)...

Alternativ för kommentarvisning

Välj ditt önskade sätt att visa kommentarerna och klicka på "Spara" för att verkställa dina ändringar.

Pettmans bild

Har du kollat att du kör flyttalsdivision och inte heltalsdivision (i det senare fallet trunkeras alla kvoter mindre än 1 till 0 ) ? Om du vill ha kvadraten av ett värde kan du skriva värdet**2 (generellt för potens- och exponentialfunktioner till är bas**exponent). För att tvinga ett värde att vara ett flyttal kan du skriva float(värde). Hoppas något av detta rättar till ditt problem.

___________________________________
För övrigt anser jag att CapsLock bör förgöras...

leochingkwakes bild

Jag har lekt lite med float utan framgång. Ett exempel på uträkning kan vara 94/(197*197). Resultatet borde bli 24.2 men den blir 412. Använder jag float så blir det 412.861702128. Så det spelar ingen roll om jag kör med eller utan float, mer än att det kommer fler nuffror Smile

FoHs bild

Nja... 0.00242 blir resultatet av de värdena...

leochingkwakes bild

Jo, jag märkte det men formeln jag hämtat från en sida säger att det skall vara så, och det fungerade så när jag körde samma kodidé i C#... Men jag får samma resultat i Gcal... skumt

Får se om jag sparade C# koden

Pettmans bild

Mycket mystiskt. Själv får jag att 94/(197*197) blir 0 med heltalsaritmetik och 0.002422... med flyttal (det senare är rimligt enligt min fulhuvudräkning 94~100, 197~200 -> 100/(200*200) -> 1/4 * 10^(2-4)=.25*10^-2).

Är det möjligen ett BMI du försöker räkna ut? Om det är det så har du gjort fel med enheterna då det ska vara meter och inte centimeter (värdena får mätetal som är 100 gånger för stora).

___________________________________
För övrigt anser jag att CapsLock bör förgöras...

leochingkwakes bild

Nu vet jag vad som är fel. Borde ha haft det i minnet för min bror ändrade ju formeln. Sidan jag hämtar det ifrån säger att det skall vara som jag skrev, men det skall ju vara 94/(1,97*1,97).

Så går det när man har för mycket att minnas.

94/(1,97*1,97) = 24,2

94/1,97*1,97 = 94

Där visar varför paranteser behövs.

Jo, det är BMI. Tänkte det var enkelt nog för att testa matematiken i python. Men det var det kanske inte, i alla fall när man fått fel info.

FoHs bild

Ja, i det exemplet. Inte i ditt första dock, där var de ju omvända.

FoHs bild

Rent matematiskt ska du väl egentligen inte behöva en parantes där öht. (x*x)/y ger samma sak som x*(x/y)

Edit: Vilket givetvis inte alls är samma sak som y/(x*x)

Pettmans bild

Paranteserna behövs inte i python heller, såvidare man inte vill ha flera saker i nämnaren. Man får dock alltid sätta ut paranteser för att förtydliga.

___________________________________
För övrigt anser jag att CapsLock bör förgöras...

leochingkwakes bild

Jo, formeln är inte min och det blir olika resultat beroende på om man har paranteser eller inte. Jag har fått formeln att fungera i C#.