StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
765 B
35 lines
765 B
/**
|
|
* 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;
|
|
};
|
|
|