news 2026/6/24 10:44:18

解决JS浮点数精度确实与大数溢出

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
解决JS浮点数精度确实与大数溢出

import Big from ‘big.js’;
import { z } from ‘zod’;

// 定义参数校验规则
// 兼容:数字、合法的数字字符串(如 ‘12.34’)
// 拒绝:NaN, Infinity, 纯字母字符串, 对象, 数组等
const NumberCoerceSchema = z
.union([
z.number().finite(), // 必须是有限的数字
z.string().regex(/^-?\d+(.\d+)?$/, “无效的数字格式”) // 必须是合法的数字字符串
])
.transform((val) => new Big(val)); // 校验通过后直接转换为 Big 对象

/**

  • 加法函数

  • @param {number|string} a - 加数 A (默认 0)

  • @param {number|string} b - 加数 B (默认 0)

  • @returns {string} 以字符串形式返回精确结果,避免大数失真
    */
    function ultimateSum(a = 0, b = 0) {
    try {
    // 运行时强校验并解析
    const bigA = NumberCoerceSchema.parse(a);
    const bigB = NumberCoerceSchema.parse(b);

    // 使用 big.js 进行高精度加法
    return bigA.plus(bigB).toString();
    } catch (error) {
    if (error instanceof z.ZodError) {
    // 结构化抛出异常,方便前端输入框或日志捕获具体是哪个参数错了
    throw new TypeError(参数校验失败: ${JSON.stringify(error.format())});
    }
    throw error;
    }
    }

// === 测试用例 ===

// 1. 浮点数高精度测试
console.log(ultimateSum(0.1, 0.2)); // “0.3” (完美)
console.log(ultimateSum(0.111, 0.222)); // “0.333”

// 2. 字符串与数字混用
console.log(ultimateSum(‘1.5’, 2.5)); // “4”

// 3. 缺省值测试
console.log(ultimateSum(5)); // “5”
console.log(ultimateSum()); // “0”

// 4. 超大数字测试(超过 JS 安全整数限制)
console.log(ultimateSum(‘9007199254740991’, 1)); // “9007199254740992”

// === 错误拦截测试 (均会抛出语义明确的错误) ===
// ultimateSum(1, NaN); // 报错: 参数校验失败 (finite 校验不通过)
// ultimateSum(1, ‘abc’); // 报错: 参数校验失败 (regex 校验不通过)
// ultimateSum(1, {}); // 报错: 参数校验失败 (类型不匹配)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/24 10:41:34

基于 silero vad 的声纹提纯

支持: 提取干净人声有人声总时长无人声总时长最大无人声区间时长 from silero_vad import load_silero_vad, get_speech_timestamps, collect_chunksfrom src.ultis import load_audiodef purified_voice(self, audio_source, sample_rate16000, min_silence_durati…

作者头像 李华
网站建设 2026/6/24 10:41:04

FastText方案——毫秒级文本分类实现___5

FastText 核心创新在于将子词(subword)信息引入神经网络语言模型,解决了传统 Word2Vec 无法处理未知词(OOV)的问题,同时显著提升了低频词的表示质量。算法:分层 Softmax N-gram 子词嵌入子词&a…

作者头像 李华
网站建设 2026/6/24 10:37:48

AI 正在「吃掉」数据库工具!从 SQLark 小百灵看智能数据库管理的三大趋势,写 SQL 的日子要结束了 - 微元算力(weytoken)

摘要:当大模型遇见数据库工具,一场静悄悄的革命正在发生。以 SQLark 小百灵 AI 为代表的智能数据库工具,正在将自然语言转 SQL、AI 辅助调试、仿真数据自动生成等能力变成标配。本文从 SQLark 的实际功能出发,深入分析 AI 驱动数据…

作者头像 李华
网站建设 2026/6/24 10:35:39

Codex 最新功能亮点:GPT-5.5、长周期任务、插件生态和安全扫描全面升级

如果你还把 Codex 理解成“AI 写代码工具”,这个认知已经有点旧了。 截至 2026 年 6 月 23 日,OpenAI 官方资料里最新的 Codex 重点可以概括成一句话:Codex 正在从代码助手,升级成一个覆盖本地开发、云端执行、团队协作、知识工作和安全治理的工程 agent 平台。 这篇文章…

作者头像 李华
网站建设 2026/6/24 10:35:28

终极指南:为什么OCRmyPDF是扫描PDF文本识别的最佳选择

终极指南:为什么OCRmyPDF是扫描PDF文本识别的最佳选择 【免费下载链接】OCRmyPDF OCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched 项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF 你是否曾经面对一堆扫描…

作者头像 李华