Hej! Det enkla (och i nån bemärkelse enda korrekta) svaret är "nej". Motiveringen är att javascript representerar tal som 64-bitars flyttal, vilket kan ge spännande effekter i vissa fall. Hej Tomas!Avrundningsproblem
Kan man på något vis fixa så att javascript räknar rätt?
Exempel från w3school:
var x = 0.2 + 0.1; // x will be 0.30000000000000004
var x = (0.2 * 10 + 0.1 * 10) / 10; // x will be 0.3
Detta sättet är inte optimalt. Finns det något ännu bättre sätt? Jag har själv testat att göra om mina tal till heltal, göra beräkningarna med dessa och sedan göra om till decimaltal igen. Det blev inte så bra.
Finns det någon som har en lösning på problemet?
Tack på förhand
Lars LantzSv: Avrundningsproblem
Ett vanligt förfarande för att minska risken för problem är, som du är inne på, att multiplicera med en korrigeringsfaktor innan operationen utförs. Därefter divideras med samma faktor, och förhoppningsvis är slutresultatet mindre fel än det vore annars. Ett lite bekvämare sätt att göra detta är att använda t.ex. sinful.js:
var x = 0.1;
var y = 0.2;
alert(Math.mul(x, y)); // ger 0.02
Sv:Avrundningsproblem
Jag har kikat lite på sinful.js men jag får inte till det.
Det enda som händer är att jag får en tom ruta.
Vad är det för fel på nedanstående kod?
Jag har testat med lite olika webbläsare nu och det funkar i Chrome, Safari och IE men inte i Firefox.
Är detta något du har råkat ut för tidigare? Kollar man i firebug så ser det ut som om den läser in filen
men den verkar inte begripa vad som står i den. Den känner inte igen .sub.
Finns det någon lösning på problemet?
<html>
<head>
<title>None</title>
<link rel="stylesheet" type="text/css" href="css/stilmall.css">
<script src="guipn-sinful.js-0f784b8/sinful.js"></script>
</head>
<body>
<script>
var x = 120.125;
var y = 120.120;
document.write(Math.sub(x, y));
</script>
</body>
/Lars