华西海圻ELN前端工程
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

36 lines
912 B

// 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;
}