mathsteps-experimental-fork
Version:
Step by step math solutions. Experimental Fork
32 lines (28 loc) • 1.12 kB
JavaScript
;
const config = require('../../config.js');
const index = require('../../node/index.js');
const ChangeTypes = require('../../types/changeType/ChangeTypes.js');
// Converts a decimal number to fraction
// e.g. 3.14 -> 314/100
function convertDecimalToFraction(node, simplifyCtx) {
let rv = null;
const isNumericalMode = simplifyCtx.expressionCtx
? simplifyCtx.expressionCtx.isNumerical()
: false;
if (!isNumericalMode
&& index.default.Type.isConstant(node)
&& config.default.isNumeric(node.value)
&& !config.default.isInteger(node.value)) {
// Node is non-integer constant e.g. 3.14.
const fractionValues = node.value.toFraction();
const numeratorNode = index.default.Creator.constant(fractionValues[0]);
const denominatorNode = index.default.Creator.constant(fractionValues[1]);
const newNode = index.default.Creator.operator('/', [numeratorNode, denominatorNode]);
rv = {
changeType: ChangeTypes.ChangeTypes.KEMU_DECIMAL_TO_FRACTION,
rootNode: newNode,
};
}
return rv
}
module.exports = convertDecimalToFraction;