initial commit
This commit is contained in:
35
node_modules/mumath/normalize.js
generated
vendored
Normal file
35
node_modules/mumath/normalize.js
generated
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* Get rid of float remainder
|
||||
*
|
||||
* @module mumath/normalize
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var almost = require('almost-equal');
|
||||
|
||||
module.exports = function(value, eps) {
|
||||
//ignore ints
|
||||
var rem = value%1;
|
||||
if (!rem) return value;
|
||||
|
||||
if (eps == null) eps = Number.EPSILON || almost.FLT_EPSILON;
|
||||
|
||||
//pick number’s neighbour, which is way shorter, like 0.4999999999999998 → 0.5
|
||||
//O(20)
|
||||
var range = 5;
|
||||
var len = (rem+'').length;
|
||||
|
||||
for (var i = 1; i < range; i+=.5) {
|
||||
var left = rem - eps*i,
|
||||
right = rem + eps*i;
|
||||
|
||||
var leftStr = left+'', rightStr = right + '';
|
||||
|
||||
if (len - leftStr.length > 2) return value - eps*i;
|
||||
if (len - rightStr.length > 2) return value + eps*i;
|
||||
|
||||
// if (leftStr[2] != rightStr[2])
|
||||
}
|
||||
|
||||
return value;
|
||||
};
|
||||
Reference in New Issue
Block a user