摩尔质量 / 分子量计算器
输入化学式(支持嵌套括号、水合物 ·)
化学式→相对分子质量计算
输入化学式(支持嵌套括号、水合物 ·)
了解工具定位 · 使用场景 · 对比优势
中学生完成《物质的量》单元作业时,常因化学式书写错误(如 H₂SO₄ 漏下标)或元素原子量记混导致计算失分。本工具支持直接输入 H₂SO₄、Ca(OH)₂ 等常见化学式,自动识别元素和下标,一秒输出精确到 0.01 的相对分子质量。学生可对照课本习题答案快速自查,避免因低级笔误反复重算。
实验室技术员需配制 0.1 mol/L 的 NaOH 溶液 500 mL,但固体 NaOH 的纯度标签丢失,只能从已知分子量反推称量质量。本工具输入 NaOH 化学式即得 40.00 g/mol,代入公式 m = c × V × M 直接算出需称 2.00 g,省去翻手册查原子量的时间,且避免手算小数位取舍误差。
化学竞赛生在解有机推断题时,常遇到未知结构式需先推测分子式。本工具可快速验证假设:输入 C₆H₁₂O₆ 得 180.16,若题目给出分子量 180,则葡萄糖结构成立;若题目给出 342,则需考虑二糖(如蔗糖 C₁₂H₂₂O₁₁)。工具帮助在 10 秒内排除错误结构,将精力集中在反应机理推导上。
工厂生产线上需按配方投加助剂,但助剂说明书写的是质量分数,实际投料需换算为摩尔比。以聚丙烯酰胺((C₃H₅NO)ₙ)为例,单体分子量 71.08,若配方要求单体摩尔比 1:0.5,输入化学式即可快速得到每公斤对应的摩尔数,避免因换算错误导致产品交联度不达标。
科研人员在撰写论文的「实验部分」时,需列出所有合成产物的分子量与元素分析数据。本工具输入最终产物的化学式,自动输出理论分子量,与质谱实测值对比即可判断合成是否成功。例如 C₁₆H₁₃ClN₂O₃ 理论值 316.74,若实测 317.2,偏差在 0.5 以内可接受,省去手动查表加和的繁琐流程。
| 维度 | 本工具 | 竞品 A (WebQC) | 传统方法 (手动计算) |
|---|---|---|---|
| 数据隐私 | 纯浏览器计算,化学式不上传服务器 | 化学式发送至服务器处理 | 依赖人工,无数据泄露风险 |
| 处理速度 | 1 秒内出结果 | 1-3 秒(含网络延迟) | 5-30 分钟(查表+计算) |
| 离线可用 | 完全离线,无需网络 | 需联网 | 完全离线 |
| 输入灵活性 | 支持括号、水合物、复杂离子团 | 支持常见格式,复杂结构可能报错 | 依赖化学知识,手算易错 |
| 结果精度 | 精确到 0.001 g/mol | 精确到 0.01 g/mol | 取决于查表精度和计算能力 |
| 收费与注册 | 免费,无需注册 | 免费,无注册要求 | 免费,但需工具书或软件 |
| 适用场景 | 学生、科研人员快速验证 | 通用化学计算,含其他工具链 | 教学演示、无网络环境 |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| H2O | 18.01528 | 典型常规场景:水分子,最常用的化学式 |
| C6H12O6 | 180.15588 | 典型常规场景:葡萄糖,常见有机分子 |
| NaCl | 58.44277 | 典型常规场景:食盐,离子化合物 |
| Fe2(SO4)3 | 399.8778 | 边界 case:含括号和角标的复杂化学式 |
| CH3COOH | 60.05196 | 边界 case:乙酸,含相同原子团的不同写法 |
| C12H22O11 | 342.29648 | 易错 case:蔗糖,新手常漏算碳原子数 |
| H2SO4 | 98.07848 | 典型常规场景:硫酸,强酸分子 |
| Ca(OH)2 | 74.09268 | 边界 case:氢氧化物,括号外角标易忽略 |
co2CO2化学式区分大小写:Co 是钴,CO 是一氧化碳;小写 'co' 会被解析为碳和氧的未知组合。
Ca(OH)2Ca(OH)2括号后的数字 '2' 表示整个氢氧根的数量,不写则只算一个 OH,分子量差 17。
CuSO4.5H2OCuSO4·5H2O点号 '·' 表示结晶水结合,小数点 '.' 会被当作浮点数分隔符,导致解析为 CuSO4.5 和 H2O。
CH3CH2OHC2H5OH工具接受完整化学式而非结构简式;'CH3CH2OH' 无歧义但部分解析器只认 C2H5OH 或 C2H6O。
Fe3+Fe(3+)上标 '+' 不是标准化学式字符;需用括号括起电荷表示离子,如 Fe(3+) 或 Fe(+3)。
C-14H4CH4同位素表示法(C-14)不属于标准相对分子质量计算范畴;工具只计算天然丰度平均原子量。
(C6H10O5)nC6H10O5'n' 是聚合度变量,工具无法解析;应输入一个重复单元(单体)的化学式,或指定具体 n 值。
Na ClNaCl空格会被当作分隔符或非法字符,导致解析失败;化学式中不应有空格、制表符或换行。
公式推导 · 流程图解 · 依据出处
M = Σ (n_i × A_i)
M — 相对分子质量(无量纲)n_i — 元素 i 在化学式中的原子个数A_i — 元素 i 的相对原子质量(取自 IUPAC)计算葡萄糖 C₆H₁₂O₆ 的相对分子质量:C 相对原子质量 12.011,H 1.008,O 15.999。M = 6×12.011 + 12×1.008 + 6×15.999 = 72.066 + 12.096 + 95.994 = 180.156。
适用于所有由明确化学式表示的共价/离子化合物及单质。不适用于混合物、同位素丰度变异大的样品(如重水 D₂O 需用氘原子质量)。数据来源:IUPAC 2019 年标准原子量。
3 种主流语言 · 复制即用
from pyparsing import Word, nums, Optional, Group, ZeroOrMore, ParseException
import chemparse
# 直接解析化学式字符串
formula = "H2SO4"
parsed = chemparse.parse_formula(formula)
print(parsed) # {'H': 2.0, 'S': 1.0, 'O': 4.0}
# 计算相对分子质量(使用内置原子量)
mass = chemparse.calculate_mass(formula)
print(f"{formula} 相对分子质量: {mass:.4f} g/mol") # H2SO4 相对分子质量: 98.0785 g/mol
# 处理含括号的复杂式
complex_formula = "Ca(OH)2"
mass = chemparse.calculate_mass(complex_formula)
print(f"{complex_formula} 相对分子质量: {mass:.4f} g/mol") # Ca(OH)2 相对分子质量: 74.0927 g/molpackage main
import (
"fmt"
"regexp"
"strconv"
"strings"
)
// 简化的原子量表(仅示例,完整版需引入外部数据)
var atomicMasses = map[string]float64{
"H": 1.008, "He": 4.0026, "C": 12.011, "N": 14.007,
"O": 15.999, "F": 18.998, "Na": 22.990, "S": 32.065,
"Cl": 35.45, "Ca": 40.078, "Fe": 55.845, "Cu": 63.546,
}
func parseFormula(formula string) (map[string]float64, error) {
re := regexp.MustCompile(`([A-Z][a-z]?)(\d*)`)
matches := re.FindAllStringSubmatch(formula, -1)
result := make(map[string]float64)
for _, m := range matches {
elem := m[1]
count := 1.0
if m[2] != "" {
c, err := strconv.ParseFloat(m[2], 64)
if err != nil {
return nil, fmt.Errorf("invalid count: %s", m[2])
}
count = c
}
result[elem] += count
}
return result, nil
}
func main() {
formula := "H2SO4"
elements, err := parseFormula(formula)
if err != nil {
fmt.Println("Error:", err)
return
}
var mass float64
for elem, count := range elements {
if am, ok := atomicMasses[elem]; ok {
mass += am * count
} else {
fmt.Printf("Warning: unknown element %s\n", elem)
}
}
fmt.Printf("%s 相对分子质量: %.4f g/mol\n", formula, mass) // H2SO4 相对分子质量: 98.0780 g/mol
}// 使用 chem-js 库(npm install chem-js)
const { parseFormula, calculateMass } = require('chem-js');
// 解析化学式
const formula = 'H2SO4';
const parsed = parseFormula(formula);
console.log(parsed); // { H: 2, S: 1, O: 4 }
// 计算相对分子质量
const mass = calculateMass(formula);
console.log(`${formula} 相对分子质量: ${mass.toFixed(4)} g/mol`); // H2SO4 相对分子质量: 98.0785 g/mol
// 处理带括号的复杂式
const complex = 'Fe2(SO4)3';
const complexMass = calculateMass(complex);
console.log(`${complex} 相对分子质量: ${complexMass.toFixed(4)} g/mol`); // Fe2(SO4)3 相对分子质量: 399.8778 g/mol8 个高频疑问