javascript rekenfout 0.7 * 3 = 2.099999996

Status
Niet open voor verdere reacties.
Altijd afronden naar boven betekent dat 0.401 t/m 0.499 afgerond wordt op 0.5
Begrijp ik dit goed?
 
Het is een andere function geworden zodat je zelf de afrondmethode en aantal decimalen kan kiezen.
Gebruik Math.round OF Math.ceil OF Math.floor (uitleg staat hieronder)
Code:
<p>Getal 1 <input type="text" id="getal1"></p>
<p>Getal 2 <input type="text" id="getal2"></p>
<p><button type="button" onclick="testen()">Vermenigvuldigen</button></p>
<p>Voor: <span id="voor"></span></p>
<p>Calc: <span id="calc"></span></p>

<script>
// Math.round : < 5 naar beneden, >= 5 naar boven
// Math.ceil  : ALTIJD naar boven afronden
// Math.floor : ALTIJD naar beneden afronden
function afronden(v) {
  var dec = 1; // aantal decimalen (0..5)
  if (!v && v!=0) return NaN;
  if (isNaN(v) || String(v).trim()=='' || typeof(v)=='boolean') return NaN;
  dec = Math.pow(10,dec);
  return Math.round(parseFloat(v)*dec)/dec;
}
function testen() {
  var g1 = parseFloat(document.getElementById("getal1").value);
  var g2 = parseFloat(document.getElementById("getal2").value);
  document.getElementById("voor").innerHTML = g1 * g2;
  document.getElementById("calc").innerHTML = afronden(g1 * g2);
}
</script>
Je vroeg naar 1 decimaal (var dec = 1).
bij Math.round betekent dit

2.83 = 2.8
2.84 = 2.8
2.85 = 2.9
2.86 = 2.9

2.8499999 = 2.8
2.8500000 = 2.9
2.8500001 = 2.9
 
Al die hier aan mee gewerkt hebben BEDANKT.

Speciaal dankt aan BRON, wat een service dat er nog steeds mensen zijn die andere gratis willen helpen.

vr.gr. Chris Los
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan