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 对象归一化为相同的精度。