Why this please

according to mathematics i thought that :

// Round change to the nearest hundreth deals with precision errors
change = Math.round(change * 100) / 100;

}

**should be same as **

// Round change to the nearest hundreth deals with precision errors
change = Math.round(change);

}
**since that **

(2.05 * 100) / 100 = 2.05

According to MDN

The Math.round() function returns the value of a number rounded to the nearest integer.

So if change is a decimal number, you will not get the same result.

1 Like

You can always write your own round that will round numbers according to given precision, or take one of million already written rounding functions (as they are in a good demand) and open sourced for everyone to use, like this one I’ve made for example:

function round(num, precision = 12) {
  return +(+(num * 10 ** precision).toFixed(0) * 10 ** -precision)
    .toFixed(precision < 0 ? 0 : precision);
}

round(0.1 + 2.2, 2); // 2.3
round(2020, -2); // 2000
1 Like
const change1 = 2.05;

console.log(Math.round(change1 * 100) / 100);
// 2.05
console.log(Math.round(change1));
// 2


const change2 = 2.049;

console.log(Math.round(change2 * 100) / 100);
// 2.05
console.log(Math.round(change2));
// 2

And don’t confuse Math.round(change * 100) / 100 with Math.round(change * 100 / 100) - they are not the same thing.

1 Like