Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- "use strict";
- let getErrorRank = err => {
- let rankCounter = 0;
- let ranks = new Array(8).fill().map((item, i) => 1 / Math.pow(10, i)).slice(1);
- for (let i = 0; i < ranks.length; i++) {
- if (err < ranks[i]) {
- rankCounter++;
- } else {
- return rankCounter;
- }
- }
- }
- let getError = (value, error) => (value.initial > value.rounded ? value.initial - value.rounded : value.rounded - value.initial) + error;
- let checkRoundedError = (value, error) => {
- let absoluteError = value * (error / 1e3);
- let errorRank = getErrorRank(absoluteError);
- let roundedValue = value.toFixed(errorRank - 1);
- let totalError = getError({ initial: value, rounded: roundedValue }, absoluteError);
- let totalErrorRank = getErrorRank(totalError);
- console.log(`Value: ${value}, Error: ${error}, Rounded: ${roundedValue}`);
- return totalErrorRank === errorRank;
- }
- [
- { value: 7.521, error: 0.12 },
- { value: 2.3544, error: 0.2 },
- { value: 21.68563, error: 0.3 }
- ].map(num => console.log(`${checkRoundedError(num.value, num.error) ? '' : 'not'} all numbers are correct in a broad sense`));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement