functie werkt niet in de berekening, verkeerde afronding
Met javascript en jquery wil ik een berekening maken op een wordpress website. Hieronder heb ik een deel van mijn script en daarbij heb ik 3 vragen. Allereerst hoe zorg ik ervoor dat de value niet naar beneden wordt afgerond en ik de juiste uitkomst krijg, dus € 354,75 x 1,9 = € 674,03 (GOED) in plaats van € 354,00 x 1 = € 354,00 (FOUT). Nu maakt het geen onderscheid tussen 1,6 en 1,9, beide worden naar beneden afgerond op 1.
<select name="leeftijd" id="leeftijd">
<option value="354,75" selected>23 jaar en ouder </option>
<select><br />
<select name="opleidingsfactor" id="opleidingsfactor">
<option value="1,6">mbo</option>
<option value="1,9" selected >hbo</option>
<select><br />
<script type="text/javascript">
function bereken(){
var leeftijd = parseInt(jQuery("#leeftijd").val());
console.log("Leeftijd: " + leeftijd);
var leeftijd = leeftijd.toFixed(2);
var opleidingsfactor = parseInt(jQuery("#opleidingsfactor").val());
console.log("Hoogst genoten opleiding: " + opleidingsfactor);
var opleidingsfactor = opleidingsfactor.toFixed(1);
Verderop in de berekening kan ik uurtarief + meerprijs niet bij elkaar optellen, omdat de + teken niet als optelling wordt gelezen. Hierdoor wordt bijvoorbeeld € 100,00 + € 21,00 geen € 121,00.
var totaal = uurtarief + meerprijs;
var totaal2 = totaal.toFixed(2);
En bij uurtarief moet bijvoorbeeld de uitkomst € 127,75 worden afgerond op € 130,00 met Math.ceil om verder te kunnen rekenen. Hoe doe ik dat precies, want als in de lijst een andere keuze wordt gemaakt, komt er een ander bedrag uit en ook dit bedrag moet op de dichtstbijzijnde € 10,00 worden afgerond, bijvoorbeeld € 572,92 moet worden € 570,00.
De uitkomst wordt als berekentekst weergegeven nadat ik het met jquery heb doorgevoerd. Alvast bedankt, want als deze drie vragen zijn beantwoord, dan hoef ik geen excel meer te gebruiken.
Begin eens met getallen niet een komma maar een punt te geven.
dus 57.2 moet afgerond worden tot 57 (en dan een 0 erachter)
round(572.92/10) * 10
want dat is dus round(57.292) * 10 = 57 * 10 = 570
werkt ook voor het naar boven afronden.
Ivo: bedankt, precies waar ik naar opzoek was. SanThe: sorry verkeerde copy/paste. Ik heb in mijn werkelijke script wel een . in plaats van een , staan, maar het probleem van de afronding blijft. 1.6 en 1.9 worden beiden afgerond op 1, waardoor de uitkomst onjuist is.
Sja, je gebruikt ook parseInt(), niet parseFloat().
Thomas bedankt. Het werkt met parseFloat.