Wpis z mikrobloga

Może być, czy coś zmienić? W ramach nauki, skrypt który podlicza na ile sztuk nas stać i ile zapłacimy:

"use strict"

const PODATEK = 0.23;
const CENA_SPRZETU_NETTO = 19.99;

var saldoWBanku = 200;
var iloscSztuk = 0;
var koszyk = 0;

var cenaBrutto = CENA_SPRZETU_NETTO + (CENA_SPRZETU_NETTO * PODATEK);

while (koszyk < (saldoWBanku - cenaBrutto)) {
koszyk += cenaBrutto;
iloscSztuk += 1;
}

console.log("Stać cię na: " + iloscSztuk + " sztuk.")
console.log("Zapłacisz: " + koszyk.toFixed(2) + "PLN.")

#naukaprogramowania #javascript
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

kodujemy po angielsku, CENASPRZETUNETTO zamiast var to let możńa to uprościć do
iloscSztuk = Math.floor(saldoWBanku / cenaBrutto )
zaplacisz = iloscSztuk * cenaBrutto
  • Odpowiedz
@michal42: Zdecydowanie zalecam NIGDY nie korzystać z matematyki js na liczbach zmiennoprzecinkowych, a szczególnie wtedy, gdy dotyczy to pieniędzy.
Popularny pattern, bez wykorzystania specjalnych bibliotek, polega na oddzieleniu części przed i po przecinku na 2 osobne liczby. Możesz to ubrać w osobną klasę, napisać do niej testy jednostkowe i masz dobry case do nauki.

  • Odpowiedz
@niepodszywamsiepodbiauka: Wydaje mi się, że można też liczbę traktować jako całkowitą tj. 600.90 na 60090? Wtedy przy zwykłym dodawaniu, odejmowaniu czy mnożeniu nie powinno być problemu. Gorzej przy bardziej skomplikowanych obliczeniach, wtedy to np. można użyć jakiegoś lekkiego frameworka.
  • Odpowiedz