[js]berekening van exponenten verkeerd

Pagina: 1
Acties:

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 10:51
Ik zit met een probleempje. Ik wil graag via javascript een stukje schrijven dat de volgende berekening uitvoert:
X = W0,425 * H0,725 * 0,007184.

Ik heb hier het volgende script voor geschreven:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script type="text/javascript">
<!--
document.berekening.bereken.onclick = function checkOppervlak ()

{
checkOppervlak ()
}

function checkOppervlak ()
{
// Dit zijn de declaraties van gewicht en lengte
gewicht = Math.pow(document.berekening.gewicht.value*100,0.425);
lengte = Math.pow(document.berekening.lengte.value*100,0.725);

document.berekening.oppervlak.value = gewicht*lengte/100
}
//-->
</script>

Ik krijg nu een waarde in "oppervlak", maar deze waarde klopt niet. Bij het invullen van gewicht en lengte van 1 zou er natuurlijk 0,007184 uit moeten komen. Dit is 0.014333964470736426. Hoe kan ik ervoor zorgen dat dit wel klopt?

[ Voor 9% gewijzigd door Paultje3181 op 05-04-2007 13:27 ]


  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Heeft de *100 en /100 er wellicht iets mee te maken?

When life gives you lemons, start a battery factory


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

En plaats je code ook even zelf tussen [code=js][/] tags :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:55

crisp

Devver

Pixelated

Dat vermenigvuldigen en delen door 100 helpt inderdaad niet best, ik snap ook niet waarvoor dat nodig is.
Ik zou het in ieder geval iets generieker opzetten:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function checkOppervlak (gewicht, lengte)
{
    var gewichtExponent = Math.pow(gewicht, 0.425);
    var lengteExponent = Math.pow(lengte, 0.725);

    var oppervlak = gewichtExponent * lengteExponent * 0.007184;

    return oppervlak;
}

document.forms['berekening'].elements['bereken'].onclick = function()
{
    var form = this.form;
    var oppervlak = checkOppervlak(
        parseFloat(form.elements['gewicht'].value),
        parseFloat(form.elements['lengte'].value)
    );

    form.elements['oppervlak'].value = oppervlak;
}

Intentionally left blank


  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Oeeeh, een kant en klare functie :) . Overigens zijn die factoren 100 precies de reden dat het fout gaat (bewezen in Excel >:) )

When life gives you lemons, start a battery factory


  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 10:51
KabouterSuper schreef op donderdag 05 april 2007 @ 12:30:
Oeeeh, een kant en klare functie :) . Overigens zijn die factoren 100 precies de reden dat het fout gaat (bewezen in Excel >:) )
Die *100 /100 heb ik toegevoegd om af te ronden op 2 decimalen. Zo heb ik dat "geleerd" via een of andere tutorial...

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:55

crisp

Devver

Pixelated

Afronden op 2 decimalen doe je zo in javascript:
JavaScript:
1
result = Math.round(result * 100) / 100;

en dat doe je het liefst zo laat mogelijk.

Intentionally left blank


  • Janoz
  • Registratie: Oktober 2000
  • Nu online

Janoz

Moderator Devschuur®

!litemod

Nou, ik kan me neit voorstellen dat je dat ook maar iets helpt met afronden (tenzij je met gehele getallen werkt of de round functie natuurlijk :) ). Doel van dergelijke tutorials is over het algemeen dat je ook begrijpt wat en waarom je iets doet, niet dat je het zomaar overneemt. Met een beetje middelbareschool wiskunde had je zelf ook wel kunnen zien dat 1000.425 nooit 1 kan worden.

[ Voor 4% gewijzigd door Janoz op 05-04-2007 13:48 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 10:51
daarom startte ik ook dit topic... Omdat ik met mijn middelbare school wiskunde snapte dat het niet klopte... Alleen wist ik niet hoe ik het op moest lossen...

Dankjewel Crisp, het werkt nu wel...

[ Voor 11% gewijzigd door Paultje3181 op 05-04-2007 14:04 ]

Pagina: 1