login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Javascript calculator fault

Offline DieHard - 26/07/2009 21:37 (laatste wijziging 26/07/2009 21:38)
Avatar van DieHardPHP interesse Mijn javascript rekenmachine werkt goed, maar bij sommige berekeningen geeft hij verkeerd antwoorden.
- Als er bij optie1 "0.7" word gekozen x optie2 "12" dan = dat 8.4
- 0.7 x 12 = 8.4
Maar het script komt uit op 8.399999999999998

Deze site http://www.neto...isplay=0.7
Heeft dezelfde fout, als je daar 0.7 x 12 intypt komt die ook niet op 8.4 uit.

Weet iemand hoe deze fout kan opgelost worden?

  1. <script language="javascript" type="text/javascript">
  2. <!--
  3. function dm(amount)
  4. {
  5. string = "" + amount;
  6. dec = string.length - string.indexOf('.');
  7. if (string.indexOf('.') == -1)
  8. return string + '.00';
  9. if (dec == 1)
  10. return string + '00';
  11. if (dec == 2)
  12. return string + '0';
  13. if (dec > 3)
  14. return string.substring(0,string.length-dec+3);
  15. return string;
  16. }
  17. //-->
  18. </script>
  19. <script language="javascript" type="text/javascript">
  20. <!--
  21. function calculate()
  22. {
  23. totaloption1 = 0.00;
  24.  
  25. if (document.form.option1_1.value > "")
  26. { option1_1 = document.form.option1_1.value };
  27. document.form.option1_1.value = eval(option1_1);
  28. if (document.form.option1_2.value > "")
  29. { option1_2 = document.form.option1_2.value };
  30. document.form.option1_2.value = eval(option1_2);
  31.  
  32. totaloption1 =
  33. eval(option1_1) *
  34. eval(option1_2) ;
  35. document.form.totaloption1.value = dm(eval(totaloption1));
  36. }
  37. //-->
  38. </script>

  1. <table border="0" cellpadding="0" width="565" id="table1">
  2. <tr>
  3. <td width="255" align="right">Option 1:
  4. <select id="option1_1" name="option1_1" onchange="calculate()">
  5. <option value="0.7">0.7</option>
  6. <option value="1">1</option>
  7. </select></td>
  8. <td align="right" width="155">&nbsp;</td>
  9. </tr>
  10. <tr>
  11. <td width="255" align="right">Option 2:
  12. <select id="option1_2" name="option1_2" onchange="calculate()">
  13. <option value="0">x 0</option>
  14. <option value="8">x 8</option>
  15. <option value="10">x 10</option>
  16. <option value="12">x 12</option>
  17. <option value="14">x 14</option>
  18. <option value="16">x 16</option>
  19. <option value="18">x 18</option>
  20. <option value="20">x 20</option>
  21. <option value="22">x 22</option>
  22. <option value="24">x 24</option>
  23. <option value="26">x 26</option>
  24. <option value="28">x 28</option>
  25. <option value="30">x 30</option>
  26. </select></td>
  27. <td align="right" width="155">&nbsp;</td>
  28. <td align="right" width="147"><i>total &euro;</i>
  29. <input type="text" name="totaloption1" size="3" tabindex="99" onchange="calculate()" /></td>
  30. </tr>
  31. <tr>
  32. <td align="right" width="255"><input type="submit" value="Go name="subButton" tabindex="50" /></td>
  33. <td align="left" width="155"><input type="reset" value="Reset" name="resetButton" tabindex="50" /></td>
  34. <td align="right" width="147">&nbsp;</td>
  35. </tr>
  36. </table>

3 antwoorden

Gesponsorde links
Offline ibmos2warp - 26/07/2009 21:55
Avatar van ibmos2warp PHP interesse Kijk eens naar parseInt en parseFloet.
Eval is evil.
Document.blabla.bla is eigenlijk niet zo'n goede manier. Gebruik liever getElementById.
Offline DieHard - 26/07/2009 23:39 (laatste wijziging 26/07/2009 23:41)
Avatar van DieHard PHP interesse Is er niet iets dat het probleem kan oplossen met toevoegingen in het huidige script? Ik ben niet zo bekent met parsInt, parsefloat en getElementById.
Offline ibmos2warp - 27/07/2009 10:56
Avatar van ibmos2warp PHP interesse Ja, parseInt en / of parseFloat gebruiken.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.242s