// massUnitUtils.js
|
|
const toGramFactor = {
|
|
'pg': 1e-12,
|
|
'ng': 1e-9,
|
|
'ug': 1e-6,
|
|
'mg': 0.001,
|
|
'g': 1,
|
|
'kg': 1000
|
|
};
|
|
|
|
const validUnits = Object.keys(toGramFactor);
|
|
|
|
export function isMassUnit(unit) {
|
|
if (typeof unit !== 'string') return false;
|
|
return validUnits.includes(unit.toLowerCase());
|
|
}
|
|
|
|
function toGrams(value, unit) {
|
|
if (typeof value !== 'number' || isNaN(value)) {
|
|
throw new Error('值必须是有效数字');
|
|
}
|
|
const lowerUnit = unit.toLowerCase();
|
|
if (!isMassUnit(lowerUnit)) {
|
|
throw new Error(`无效的质量单位: ${unit}`);
|
|
}
|
|
return value * toGramFactor[lowerUnit];
|
|
}
|
|
|
|
export function compareMass(value1, unit1, value2, unit2) {
|
|
const grams1 = toGrams(value1, unit1);
|
|
const grams2 = toGrams(value2, unit2);
|
|
|
|
if (grams1 > grams2) return 1;
|
|
if (Math.abs(grams1 - grams2) < 1e-12) return 0;
|
|
return -1;
|
|
}
|