decimal128
Version:
Partial implementation of IEEE 754 Decimal128 decimal floating-point numbers
39 lines (38 loc) • 1.11 kB
JavaScript
;
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
function getRandomDigits(n) {
let digits = [];
for (let i = 0; i < n; i++) {
digits.push(getRandomInt(10));
}
return digits;
}
function getRandomDigitsAsString(n) {
let digits = getRandomDigits(n + 2);
let result = digits.slice(0, n).join("") + "." + digits.slice(n).join("");
let noInitialZeroes = result.replace(/^0+/, "");
let noTrailingZeroes = noInitialZeroes.replace(/0+$/, "");
return noTrailingZeroes.replace(/\.$/, "");
}
function compareNumbers(digits1) {
return Number(digits1).toString();
}
function keepTrying() {
let digits1 = getRandomDigitsAsString(9);
let result1 = compareNumbers(digits1);
if (digits1 !== result1) {
console.log(`${digits1} != ${result1}`);
}
return digits1 !== result1;
}
let numAttempts = 1000;
let numFailures = 0;
for (let i = 0; i < numAttempts; i++) {
let failed = keepTrying();
if (failed) {
numFailures++;
}
}
console.log(`Failed ${numFailures} out of ${numAttempts} attempts`);