[js]Simpel rekenen met afronden

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 20:11
Ik heb een simpel rekensommetje. Ik moet x*2,2 afronden naar boven met javascript.

Nu is dat niet zo'n groot probleem zou ik denken:
JavaScript:
1
regels = Math.ceil(2.2*scans);

Alleen als scans een veelvoud is van 10 rekent hij verkeerd. Bijvoorbeeld 110 = 243, terwijl dit 242 zou moeten zijn.

Voor zover ik heb kunnen achterhalen heeft dit te maken met floating point berekeningen, maar een duidelijke oplossing kom ik dan weer niet echt tegen. Doordat het math.ceil is, krijg ik de afronding van 242,00000000004 = 243.

Iemand die me hierbij kan helpen?

Beste antwoord (via Paultje3181 op 31-07-2016 20:13)


  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 23:32
JavaScript:
1
regels = Math.ceil((2.2*scans).toFixed(2));

Dus eerst afronden op X decimalen is een optie.

Als ik de originele code hier draai krijg ik ook 243:
http://math.chapman.edu/~jipsen/js/

Met toFixed netjes 242.

[ Voor 6% gewijzigd door CurlyMo op 31-07-2016 20:08 ]

Sinds de 2 dagen regel reageer ik hier niet meer

Alle reacties


Acties:
  • 0 Henk 'm!

  • spone
  • Registratie: Mei 2002
  • Niet online
Ik krijg het hier niet gereproduceerd (firefox, mac):

[code=javascript]var scans = 110;
var regels = Math.ceil(2.2*scans);
alert(regels);[/code]

Mogelijk is het iets browserspecifieks of gaat het ergens anders in je code niet goed?


Hier hetzelfde resultaat, had niet goed gelezen :X

[ Voor 11% gewijzigd door spone op 31-07-2016 20:07 ]

i5-14600K | 32GB DDR5-6000 | RTX 5070 - MacBook Pro M1 Pro 14" 16/512


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 23:32
JavaScript:
1
regels = Math.ceil((2.2*scans).toFixed(2));

Dus eerst afronden op X decimalen is een optie.

Als ik de originele code hier draai krijg ik ook 243:
http://math.chapman.edu/~jipsen/js/

Met toFixed netjes 242.

[ Voor 6% gewijzigd door CurlyMo op 31-07-2016 20:08 ]

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 20:11
ok, top! Dankjewel. Nu kan ik weer veilig facturen sturen via javascript ;)

Acties:
  • +1 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 23:32
Voor meer informatie en hoe irritant dit probleem is kan je zoeken naar floating point arithmetic. Er zijn verschillende discussies over hoe je het goed aanpakt. Voor jouw specifieke doel is denk ik toFixed voldoende.

Sinds de 2 dagen regel reageer ik hier niet meer