JSFiddle - React, Tailwind, and code Playground
JavaScript
unittest(Number.EPSILON);
var value = 1.0;
var epsilon = 0;
var exponent= 0;
while(value != 0.0 ) {
epsilon = value;
value = value/2.0;
exponent--;
}
unittest(epsilon);
perftest(Number.EPSILON);
perftest2(Number.EPSILON);
perftest(epsilon);
perftest2(epsilon);
function unittest(epsilon) {
var almost1 = 1-epsilon;
document.body.innerHTML += "Epsilon=" + epsilon + "<br/>";
document.body.innerHTML += "Almost1=" + almost1 + "<br/>";
for(var i = 1; i < 30; i++) {
var number = 1+(1/(Math.pow(10,i)));
document.body.innerHTML += number + " customceil(" + ((number + almost1) >> 0) + ") ceil(" + Math.ceil(number) + ")<br/>";
}
for(var i = 1; i < 30; i++) {
var number = 2-(1/(Math.pow(10,i)));
document.body.innerHTML += number + " customceil(" + ((number + almost1) >> 0) + ") ceil(" + Math.ceil(number) + ")<br/>";
}
}
function perftest(epsilon) {
var start = new Date().getTime();
var almost1 = 1-epsilon;
var result = 0;
for(var i = 1; i < 100000000; i++) {
result = result + (((1 + almost1) >> 0));
}
var end = new Date().getTime();
var time = end - start;
document.body.innerHTML += "(customceil,Epsilon=" + epsilon + ",Took=" + time + "<br/>";
}
function perftest2(epsilon) {
var start = new Date().getTime();
var almost1 = 1-epsilon;
var result = 0;
for(var i = 1; i < 100000000; i++) {
result = result + (Math.ceil(1));
}
var end = new Date().getTime();
var time = end - start;
document.body.innerHTML += "(Math.ceil,Epsilon=" + epsilon + ",Took=" + time + "<br/>";
}