Forum » Client-Side scripting » Afrond probleem
Rapifia Europe
Berichten: 3716
avatar
Offline Stuur privebericht
Beste,

Voor een website van mij moet ik de te krijgen valuta uitrekenen, vanaf de prijs die ingevoerd word. Dit houd in dat er 0,70 keer de te betalen prijs gerekend moet worden.
Ik gebruik daarvoor dit script:
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function countvaluta (prijs){
    var 
prijs2 prijs.replace(","".");
    if(
prijs2 >= 0.20 && prijs2 <= 40){
        var 
prijs3 prijs2*0.70;
        var 
punten2 prijs3.toFixed(2);
        
document.getElementById('punten').value punten2.replace("."",");
        
document.getElementById('submit').disabled false;
        
document.getElementById('submit').setAttribute("class""inputenabled");
        
document.getElementById('error1').innerHTML '';
        
document.getElementById('error2').innerHTML '';
    } else{
        
document.getElementById('error2').innerHTML 'Ongeldige prijs';
        
document.getElementById('submit').disabled true;
        
document.getElementById('submit').setAttribute("class""inputdisabled");
    }
}


Als ik bijvoorbeeld 1,15 invoer, dan komt er 0,80 op het script uit. Dit klopt niet want als ik het met de rekenmachine nareken (1.15*0.70) dan kom ik op 0.805 wat dus inhoud dat het 0.81 zou moeten worden..
Ik heb ook toPrecision al geprobeerd en gekloot met math.Round(), zelfde resultaat.

Hoe los ik dit op?
Voor een betalingssysteem is het namelijk niet handig.

Als iemand een andere vergelijkbare functie heeft is het ook goed, enige eisen zijn dat hij ook een eventuele ingevoerde komma kan verwerken.

Alvast bedankt!
07-05-2011 18:19
Dit topic is 220 keer bekeken door 40 verschillende leden
Reacties op: "Afrond probleem"
1
Rapifia Europe
Berichten: 3716
avatar
Offline Stuur privébericht
Ik heb het toch zelf kunnen oplossen.
Ik gebruik nu deze functie i.p.v. toFixed();
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
function formatAsMoney(mnt) {
    
mnt -= 0;
    
mnt = (Math.round(mnt*100))/100;
    return (
mnt == Math.floor(mnt)) ? mnt '.00' 
              
: ( (mnt*10 == Math.floor(mnt*10)) ? 
                       
mnt '0' mnt);
}


Die heb ik ergens op het internet gevonden en hij werkt perfect .
07-05-2011 19:56
Reageer op: "Afrond probleem"
1
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden