Is there a way to convert numbers with decimals into fractions
How would you view the following:
- Would 2 result in 2 or 2/1
- Would 2.5 result in 2 1/2 or 5/2
I would like it to show the decimal side as a fraction for instance 2.25 to 2¼
Kept this screenshot for you, Jeff and @Darren_Murphy because I just remembered how you all taught me about how decimals don’t really look the same way they are. What is it called? Floating-point precision or something?
Anyway, the code was adjusted and it should work now. Please use this in your JavaScript column.
// Separate the integer part and the decimal part
const integerPart = Math.floor(p1);
const decimalPart = p1 - integerPart;
// If there is no decimal part, return the integer part
if (decimalPart === 0) {
return `${integerPart}`;
}
// Convert decimal part to fraction
const gcd = (a, b) => b ? gcd(b, a % b) : a;
const decimalString = decimalPart.toFixed(10); // Fixing precision issues
const denominator = Math.pow(10, decimalString.split('.')[1].length);
const numerator = Math.round(decimalPart * denominator);
const commonDivisor = gcd(numerator, denominator);
const simplifiedNumerator = numerator / commonDivisor;
const simplifiedDenominator = denominator / commonDivisor;
// Return the mixed fraction
return `${integerPart} ${simplifiedNumerator}/${simplifiedDenominator}`;
It worked but I think there is something that need to be adjusted too. When the number with decimal has a zero like this 0.75 it’s having a zero too on the faction side too like this 0¾ instead of just the ¾. Is there a way ho adjust that sir
I have managed to adjust it. But thanks for sharing this sir.
// Separate the integer part and the decimal part
const integerPart = Math.floor(p1);
const decimalPart = p1 - integerPart;
// If there is no decimal part, return the integer part
if (decimalPart === 0) {
return ${integerPart} In stock
;
}
// Convert decimal part to fraction
const gcd = (a, b) => b ? gcd(b, a % b) : a;
const decimalString = decimalPart.toFixed(10); // Fixing precision issues
const denominator = Math.pow(10, decimalString.split(‘.’)[1].length);
const numerator = Math.round(decimalPart * denominator);
const commonDivisor = gcd(numerator, denominator);
const simplifiedNumerator = numerator / commonDivisor;
const simplifiedDenominator = denominator / commonDivisor;
// If there is no integer part, return just the fraction part with “Kg In stock”
if (integerPart === 0) {
return ${simplifiedNumerator}/${simplifiedDenominator} Kg In stock
;
}
// Return the mixed fraction with appropriate unit
return ${integerPart} ${simplifiedNumerator}/${simplifiedDenominator} Kg In stock
;
This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.