Skip to content

单位计算

a-calc 支持带单位的数值参与运算,适用于金融、物理等需要保留单位的计算场景。

启用单位计算

使用 _unit: true 选项启用单位计算:

javascript
import { calc } from 'a-calc'

calc('100元 + 50元', { _unit: true })     // '150元'
calc('10kg + 5kg', { _unit: true })       // '15kg'
calc('50% + 30%', { _unit: true })        // '80%'

单位提取规则

a-calc 会自动从数值后面提取单位:

javascript
calc('100元', { _unit: true })            // '100元'
calc('99.9折', { _unit: true })           // '99.9折'
calc('15%', { _unit: true })              // '15%'
calc('3.14π', { _unit: true })            // '3.14π'

注意

单位必须紧跟在数字后面,不能有空格:

javascript
calc('100元', { _unit: true })   // ✓ 正确
calc('100 元', { _unit: true })  // ✗ 错误,单位会被忽略

复杂表达式

单位计算支持复杂的数学表达式:

javascript
calc('(100元 + 50元) * 2', { _unit: true })     // '300元'
calc('100元 * 3 - 50元', { _unit: true })       // '250元'
calc('1000元 / 4', { _unit: true })             // '250元'
calc('2 ** 10 字节', { _unit: true })           // '1024字节'

变量中的单位

变量值也可以包含单位:

javascript
calc('price + discount', {
  price: '100元',
  discount: '20元',
  _unit: true
})  // '120元'

calc('total * rate', {
  total: '1000元',
  rate: 0.8,
  _unit: true
})  // '800元'

移除单位

使用 !u!uh(无参数时)移除结果中的单位:

javascript
calc('100元 + 50元', { _unit: true })           // '150元'
calc('100元 + 50元 | !u', { _unit: true })      // '150'
calc('100元 + 50元 | !uh', { _unit: true })     // '150' (等效)

单位与格式化结合

单位计算可以与格式化选项一起使用:

javascript
// 保留小数
calc('100.5元 + 50.3元 | =2', { _unit: true })  // '150.80元'

// 千分位
calc('1000元 + 500元 | ,', { _unit: true })     // '1,500元'

// 组合
calc('10000元 * 1.5 | =2,', { _unit: true })    // '15,000.00元'
Ctrl+D 选择词, Ctrl+/ 注释

注意事项

  1. 单位一致性:同一表达式中的单位应该保持一致,a-calc 会使用表达式中第一个出现的单位
  2. 单位仅用于显示:单位不参与实际的换算计算,仅作为标记保留在结果中

3.x 增强功能

3.x 版本提供了更强大的单位系统功能:

  • 单位转换:支持不同单位之间的换算(如分→元、米→千米)
  • 单位位置:控制单位在结果中的显示位置(前/后/中间)

基于 MIT 许可发布