Advertisement
Guest User

Untitled

a guest
Sep 27th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. "use strict";
  2.  
  3. let getErrorRank = err => {
  4. let rankCounter = 0;
  5. let ranks = new Array(8).fill().map((item, i) => 1 / Math.pow(10, i)).slice(1);
  6.  
  7. for (let i = 0; i < ranks.length; i++) {
  8. if (err < ranks[i]) {
  9. rankCounter++;
  10. } else {
  11. return rankCounter;
  12. }
  13. }
  14. }
  15.  
  16. let getError = (value, error) => (value.initial > value.rounded ? value.initial - value.rounded : value.rounded - value.initial) + error;
  17.  
  18. let checkRoundedError = (value, error) => {
  19. let absoluteError = value * (error / 1e3);
  20. let errorRank = getErrorRank(absoluteError);
  21. let roundedValue = value.toFixed(errorRank - 1);
  22. let totalError = getError({ initial: value, rounded: roundedValue }, absoluteError);
  23. let totalErrorRank = getErrorRank(totalError);
  24.  
  25. console.log(`Value: ${value}, Error: ${error}, Rounded: ${roundedValue}`);
  26.  
  27. return totalErrorRank === errorRank;
  28. }
  29.  
  30. [
  31. { value: 7.521, error: 0.12 },
  32. { value: 2.3544, error: 0.2 },
  33. { value: 21.68563, error: 0.3 }
  34. ].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