Dinero.js 的核心优势

  • 精确计算:避免浮点数误差

  • 货币安全:支持多币种、汇率转换

  • 格式化友好:轻松处理千分位、货币符号

  • 不可变数据:防止意外修改金额

******* 创建和操作 *******
import { USD } from'@dinero.js/currencies';
import { dinero, add, subtract, multiply, divide } from'dinero.js';
// 创建货币对象
const d1 = dinero({ amount: 500, currency: USD });
const d2 = dinero({ amount: 800, currency: USD });
// 加法
const sum = add(d1, d2);
console.log(sum.getAmount()); // 输出:1300
// 减法
const difference = subtract(d1, d2);
console.log(difference.getAmount()); // 输出:-300
// 乘法
const product = multiply(d1, 2);
console.log(product.getAmount()); // 输出:1000
// 除法
const quotient = divide(d1, 2);
console.log(quotient.getAmount()); // 输出:250


******* 格式化 *******
import { USD } from'@dinero.js/currencies';
import { dinero } from'dinero.js';
const d = dinero({ amount: 500, currency: USD });
// 默认格式化
console.log(d.toFormat()); // 输出:$5.00
// 自定义格式化
console.log(d.toFormat('$0,0.00')); // 输出:$5.00
console.log(d.toFormat('$0,0')); // 输出:$5
console.log(d.toFormat('$0.00')); // 输出:$5.00


******* 货币转换 *******
import { USD, EUR } from'@dinero.js/currencies';
import { dinero, convert } from'dinero.js';
const d = dinero({ amount: 500, currency: USD });
// 转换为欧元,假设汇率为 0.85
const converted = convert(d, { to: EUR, rate: 0.85 });
console.log(converted.getAmount()); // 输出:425


******* 精度控制 *******
import { USD } from'@dinero.js/currencies';
import { dinero } from'dinero.js';
const d = dinero({ amount: 500, currency: USD, precision: 3 });
console.log(d.toFormat('$0,0.000')); // 输出:$5.000

方法 API 介绍:

getAmount():返回金额。

getCurrency():返回货币代码。

getLocale():返回区域设置。

getPrecision():返回精度。

add(addend):返回两个 Dinero 对象的和。

subtract(subtrahend):返回两个 Dinero 对象的差。

multiply(multiplier, roundingMode):返回乘以给定因子后的值。

divide(divisor, roundingMode):返回除以给定因子后的值。

percentage(percentage, roundingMode):返回当前值的百分比。

allocate(ratios):根据给定的比例分配金额。

convert(currency, options):将金额转换为另一种货币。

equalsTo(comparator):检查当前值是否等于另一个 Dinero 对象。

lessThan(comparator):检查当前值是否小于另一个 Dinero 对象。

lessThanOrEqual(comparator):检查当前值是否小于或等于另一个 Dinero 对象。

greaterThan(comparator):检查当前值是否大于另一个 Dinero 对象。

greaterThanOrEqual(comparator):检查当前值是否大于或等于另一个 Dinero 对象。

isZero():检查当前值是否为零。

isPositive():检查当前值是否为正数。

isNegative():检查当前值是否为负数。

hasSubUnits():检查当前值是否包含小数单位。

hasCents():检查当前值是否包含小数单位(已弃用,使用 hasSubUnits)。

hasSameCurrency(comparator):检查当前货币是否与另一个 Dinero 对象相同。

hasSameAmount(comparator):检查当前金额是否与另一个 Dinero 对象相同。

setLocale(newLocale):返回一个新的 Dinero 对象,包含指定的区域设置。

toFormat(format, roundingMode):将 Dinero 对象格式化为字符串。

toUnit():返回金额的单位值。

toRoundedUnit(digits, roundingMode):返回四舍五入后的单位值。

toObject():返回对象的数据作为字面量对象。

toJSON():返回对象的数据作为字面量对象(与 toObject 相同)。

convertPrecision(newPrecision, roundingMode):返回一个新的 Dinero 对象,包含新的精度和转换后的金额。

normalizePrecision(objects):将多个 Dinero 对象归一化为相同的精度。