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/>";
}