| | |
| | | return `${year}-${month}-${day}`;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 截断(舍去)指定位数后不四舍五入
|
| | | * @param {number} num - 要处理的数字
|
| | | * @param {number} decimals - 要保留的小数位数,默认为0
|
| | | * @returns {number} 截断后的数字
|
| | | * @example
|
| | | * truncate(3.14159, 2) // 返回 3.14
|
| | | * truncate(3.999, 2) // 返回 3.99
|
| | | * truncate(-3.14159, 2) // 返回 -3.14
|
| | | * truncate(123.456, 0) // 返回 123
|
| | | */
|
| | | export function truncate(num, decimals = 0) {
|
| | | // 参数验证
|
| | | if (typeof num !== 'number' || isNaN(num)) {
|
| | | console.warn('truncate: 第一个参数必须是有效数字');
|
| | | return num;
|
| | | }
|
| | | if (typeof decimals !== 'number' || decimals < 0 || !Number.isInteger(decimals)) {
|
| | | console.warn('truncate: 第二个参数必须是非负整数');
|
| | | return num;
|
| | | }
|
| | |
|
| | | // 如果保留0位小数,直接使用 Math.trunc
|
| | | if (decimals === 0) {
|
| | | return Math.trunc(num);
|
| | | }
|
| | |
|
| | | // 计算倍数(10的decimals次方)
|
| | | const multiplier = Math.pow(10, decimals);
|
| | | |
| | | // 对于负数,使用 Math.ceil 来确保正确截断
|
| | | // 对于正数,使用 Math.floor 来截断
|
| | | if (num < 0) {
|
| | | return Math.ceil(num * multiplier) / multiplier;
|
| | | } else {
|
| | | return Math.floor(num * multiplier) / multiplier;
|
| | | }
|
| | | }
|