Napisałem prosty kalkulator procentów (kalkulatorprocentow.pl), w którym użyłem zaokrąglania do dwóch miejsc po przecinku, ale niestety nie działa to tak jak powinno:
Funkcja zaokrąglania:
function roundTo(n, digits) {
var negative = false;
if (digits === undefined) {
digits = 0;
}
if (n < 0) {
negative = true;
n = n * -1;
}
var multiplicator = Math.pow(10, digits);
n = parseFloat((n * multiplicator).toFixed(11));
n = (Math.round(n) / multiplicator).toFixed(digits);
if (negative) {
n = (n * -1).toFixed(digits);
}
return n;
}
Funkcja do obliczenia zmiany procentowej liczby:
function changeNumberCalculation() {
var firstNumber = document.getElementById("firstNumber").value;
var secondNumber = document.getElementById("secondNumber").value;
var changeNumbeResult = ((secondNumber / firstNumber) - 1)
var fixedchangeNumbeResult = roundTo(changeNumbeResult, 4);
if (Number.isNaN(changeNumbeResult)) {
document.getElementById("changeNumberCalculation").className = "result alert alert-warning"
document.getElementById("changeNumberCalculation").innerHTML = "Wpisz dane";
} else {
document.getElementById("changeNumberCalculation").className = "result alert alert-success"
document.getElementById("changeNumberCalculation").innerHTML = fixedchangeNumbeResult * 100 + " %";
}
}
Dla danych firstNumber = 12122134124124124
i secondNumber = 2231131213123123
wynik wychodzi -81.58999999999999, a powinien -81.59