文档中心
探索 DWeb 框架的无限可能,构建下一代高性能 Web 应用
数学工具
提供数学计算辅助函数。所有函数在服务端和客户端都可用。
快速开始
Code
import { clamp, round, random, sum, percent } from "@dreamer/dweb/utils/math";
// 限制数值范围
const value = clamp(150, 0, 100); // 100
// 四舍五入
const rounded = round(3.14159, 2); // 3.14
// 随机数
const randomNum = random(1, 10);
// 数组求和
const total = sum([1, 2, 3, 4, 5]);
// 计算百分比
const pct = percent(25, 100); // 25数值处理
限制数值范围
将数值限制在指定的最小值和最大值之间。
Code
import { clamp } from "@dreamer/dweb/utils/math";
clamp(150, 0, 100); // 100
clamp(-10, 0, 100); // 0
clamp(50, 0, 100); // 50取整函数
Code
import { round, floor, ceil } from "@dreamer/dweb/utils/math";
// 四舍五入(指定小数位)
round(3.14159, 2); // 3.14
round(3.5); // 4
// 向下取整(指定小数位)
floor(3.14159, 2); // 3.14
floor(3.9, 0); // 3
// 向上取整(指定小数位)
ceil(3.14159, 2); // 3.15
ceil(3.1, 0); // 4随机数生成
生成随机数
Code
import { random, randomInt } from "@dreamer/dweb/utils/math";
// 生成随机浮点数
random(1, 10); // 1 到 10 之间的随机数
random(0, 1); // 0 到 1 之间的随机数
random(); // 0 到 1 之间的随机数
// 生成随机整数
randomInt(1, 10); // 1 到 10 之间的随机整数(包含 1 和 10)
randomInt(0, 100); // 0 到 100 之间的随机整数数组统计
数组统计函数
Code
import { sum, average, max, min } from "@dreamer/dweb/utils/math";
// 求和
sum([1, 2, 3, 4, 5]); // 15
sum([10, 20, 30]); // 60
// 平均值
average([1, 2, 3, 4, 5]); // 3
average([10, 20, 30]); // 20
// 最大值
max([1, 5, 3, 9, 2]); // 9
max([-10, -5, -20]); // -5
// 最小值
min([1, 5, 3, 9, 2]); // 1
min([-10, -5, -20]); // -20百分比和插值
计算百分比
Code
import { percent } from "@dreamer/dweb/utils/math";
percent(25, 100); // 25
percent(1, 3); // 33.33
percent(1, 3, 0); // 33(指定小数位为 0)线性插值
在两个值之间进行线性插值。
Code
import { lerp } from "@dreamer/dweb/utils/math";
lerp(0, 100, 0.5); // 50
lerp(10, 20, 0.3); // 13
lerp(0, 100, 0); // 0
lerp(0, 100, 1); // 100距离计算
计算两点距离
计算二维平面上两点之间的欧几里得距离。
Code
import { distance } from "@dreamer/dweb/utils/math";
distance(0, 0, 3, 4); // 5(勾股定理:3-4-5 三角形)范围判断
判断数值是否在范围内
Code
import { inRange } from "@dreamer/dweb/utils/math";
inRange(5, 0, 10); // true
inRange(15, 0, 10); // false
inRange(0, 0, 10); // true(包含边界)完整示例
Code
import {
clamp,
round,
randomInt,
sum,
average,
percent,
lerp,
distance,
inRange,
} from "@dreamer/dweb/utils/math";
// 限制进度值在 0-100 之间
const progress = clamp(userProgress, 0, 100);
// 格式化金额(保留 2 位小数)
const price = round(99.999, 2); // 100
// 生成随机 ID
const randomId = randomInt(1000, 9999);
// 计算平均分
const scores = [85, 90, 78, 92, 88];
const avgScore = average(scores);
// 计算完成百分比
const completed = 75;
const total = 100;
const completionRate = percent(completed, total);
// 动画插值
const startValue = 0;
const endValue = 100;
const currentValue = lerp(startValue, endValue, 0.5); // 50
// 计算鼠标点击位置到原点的距离
const clickDistance = distance(0, 0, mouseX, mouseY);
// 验证输入范围
if (inRange(userInput, 0, 100)) {
// 输入有效
}API 参考
Code
// 数值处理
- clamp(value, min, max) - 限制数值范围
- round(value, decimals?) - 四舍五入
- floor(value, decimals?) - 向下取整
- ceil(value, decimals?) - 向上取整
// 随机数生成
- random(min?, max?) - 生成随机浮点数
- randomInt(min?, max?) - 生成随机整数
// 数组统计
- sum(array) - 数组求和
- average(array) - 数组平均值
- max(array) - 数组最大值
- min(array) - 数组最小值
// 百分比和插值
- percent(value, total, decimals?) - 计算百分比
- lerp(start, end, t) - 线性插值
// 距离和范围
- distance(x1, y1, x2, y2) - 计算两点距离
- inRange(value, min, max) - 判断数值是否在范围内