Laitoin viestin tänne. En tiedä olisiko pitänyt laittaa nettiohjelmointi-kategoriaan, mutta kuitenkin...
Olen laskemassa JavaScriptissä koenumeroa
prosentti = 100 / $('#maximum').val() * $('#points').val(); //Lasketaan, kuinka hyvin oppilaan koe on mennyt prosentuaalisesti laskin = 23 / 100 * (prosentti - $('#percent').val()); //Palauteaan prosentuaalista osaamista vastaava luku väliltä 0-23. switch (Math.round(laskin)){ case 1: ...}
Kerkisin jo kehuskelemaan skriptin toimintaa, mutta sitten pääsikin käymään pikku feilaus. Nimittäin muuttuja laskin
laskee luvun aivan väärin. Huomasin tämän, kun yritin laskea skriptillä numeroa esimerkkioppilaalle. Oppilaalla oli 45 pistettä, eli maksimipistemäärä ja arvostelutiukkuus oli 30%. Numeroksi tuli 8½. Eihän se näin voi mennä: 45/45 = 10. Tämän jälkeen aloin tutkimaan koodia ja huomasinkin mistä kiikastaa.
En nyt vaan keksi mitään ratkaisua, miten koenumero lasketaan. Auttaisiko joku?
Mitäs tuossa prosentissa oikein laskeskelet, itsellä tulisi ensimmäisenä mieleen kyllä jaella pisteet maksimilla eikä sataa maksimia kertaa pisteillä.
Haitko jotain tällaista?
// rajasuhde = rajaprosentti * 0.01; raja = maksimi * rajasuhde; arvosana = 4.5 + (10 - 4.5) * (pisteet - raja) / (maksimi - raja);
Prosentit ovat äärimmäisen epäkäytännöllinen pseudoyksikkö, joten käytännössä koskaan ei kannata "laskea prosenteilla", vaan käyttäjän syöttämät prosentit kannattaa muuttaa tavallisiksi luvuiksi (prosentti = per centum = 1/100 = 0,01).
@Lebe80 On huomattavasti selkeämpi jakaa sata maksimilla ja kertoa pisteillä, kuin ehdottamallasi tavalla, joka taas on vuorostaan helpompi.
@Metabolix Kyllä. Tuota hain. Miksi kommentoit rajasuhde-muuttujan?
En kommentoinut mitään muuttujaa, vaan kommentoin laskun ja sijoituksen. Muuttujat määritellään var-lauseilla.
Kommentoin kyseisen rivin, koska jos itse tekisin tuollaista järjestelmää, siinä ei olisi lainkaan prosentteja JS-koodin puolella, ellei tilaaja aivan erikseen vaatisi systeemiin tekstikenttää, johon saa käsin näppäillä arvon juuri prosentteina. Kuten jo äsken sanoin, prosenteista on laskuissa vain vaivaa.
Petja kirjoitti:
@Lebe80 On huomattavasti selkeämpi jakaa sata maksimilla ja kertoa pisteillä, kuin ehdottamallasi tavalla, joka taas on vuorostaan helpompi.
Itse ainakin tykkään saada luvut 0-1 välille, jolloin se nimenomaan on selkeämpi (luku 1 on yläraja, 0 on alaraja) kertoa sitten luvulla.
Metabolix kirjoitti:
Muuttujat määritellään var-lauseilla.
Niin noh, olenhan toki alustanut nämä muuttujat var
illa, mutta ne eivät näy tuossa pastaamassani koodiclipissä. Mutta oli miten oli..
Lebe80 kirjoitti:
Itse ainakin tykkään saada luvut 0-1 välille, jolloin se nimenomaan on selkeämpi (luku 1 on yläraja, 0 on alaraja) kertoa sitten luvulla.
Kullakin mielipiteensä. Minusta 100:n kuuluisi on yläraja, ja 0:n sitten alaraja. Toki kummallekin on omanlaisensa sovellutuksensa. Joskus on tarvetta prosentille, joskus desimaalille.
Aihe on jo aika vanha, joten et voi enää vastata siihen.