number.
                  
                  
                       *
                  
                  
                       * @param {String}  type  The type of adjustment.
                  
                  
                       * @param {Number}  value The number.
                  
                  
                       * @param {Integer} exp   The exponent (the 10 logarithm of the adjustment base).
                  
                  
                       * @returns {Number} The adjusted value.
                  
                  
                       */
                  
                  
                      function decimalAdjust(type, value, exp) {
                  
                  
                          // If the exp is undefined or zero...
                  
                  
                          if (typeof exp === 'undefined' || +exp === 0) {
                  
                  
                              return $window.Math[type](value);
                  
                  
                          }
                  
                  
                          value = +value;
                  
                  
                          exp = +exp;
                  
                  
                          // If the value is not a number or the exp is not an integer...
                  
                  
                          if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
                  
                  
                              return NaN;
                  
                  
                          }
                  
                  
                          // Shift
                  
                  
                          value = value.toString().split('e');
                  
                  
                          value = $window.Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
                  
                  
                          // Shift back
                  
                  
                          value = value.toString().split('e');
                  
                  
                          return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
                  
                  
                      }
                  
                  
                
wtf
This is horrifying
JS has precision issues, that's why
use a bigdecimal library?
Обсуждают сегодня