JSFiddle - React, Tailwind, and code Playground
by hescano
JavaScript
function mixedFraction(s){
var vals = s.split('/').map(v=>Number(v));
var g = gcd(vals[0], vals[1]);
while (g > 1) {
vals[0] = vals[0] / g;
vals[1] = vals[1] / g;
g = gcd(vals[0], vals[1]);
}
var m = vals[0] >= 0 ? Math.floor(vals[0] / vals[1]) : Math.ceil(vals[0] / vals[1]);
var remainder = vals[0] % vals[1];
var result = "";
if (remainder !== 0) {
result = (m !== 0 ? m + " " : "") + Math.abs(remainder) + "/" + Math.abs(vals[1]);
} else {
result = vals[0] / vals[1];
}
return result.toString();
}
function ZeroDivisionError(message) {
this.name = "ZeroDivisionError";
this.message = (message || "");
}
ZeroDivisionError.prototype = new Error();
ZeroDivisionError.prototype.constructor = ZeroDivisionError;
function gcd(a, b) {
if (!b) {
return a;
}
return gcd(b, a % b);
}
console.log(mixedFraction('-22/-7'))