mm_maths
Version:
这是一个可以将数学公式推导变形,并转成js和计算的模块。
49 lines (47 loc) • 1.16 kB
JavaScript
const denominator = require('../../math/base/denominator');
/**
* 输入百分比, 转成分数
* @param {number} val 值 或 公式
* @return {number} 返回分数值或分数式
*/
module.exports = function percentage(val) {
var arr = val.match(/([0-9]+\.)?[0-9]+%/g);
if (arr) {
var len = arr.length;
for (var i = 0; i < len; i++) {
var o = arr[i];
if (o) {
var v = o.replace('%', '');
v = (Number(v) / 100) + '';
var index = v.indexOf('.');
if(index !== -1){
var len = v.length;
var integer = Number(v.substring(0, index));
var d = v.substring(index + 1, len);
var decimal = Number(d);
if(decimal === 0){
val = val.replace(o, integer);
}
else {
var n = Math.pow(10, d.length);
var {
multiply,
divide
} = denominator(decimal, n);
var exp = multiply + '/' + divide;
if(integer === 0){
val = val.replace(o, exp);
}
else {
val = val.replace(o, integer + ' +' + exp);
}
}
}
else {
val = val.replace(o, v);
}
}
}
}
return val;
};