此处为全站公告,通常对读者进行申明或对该WIKI某些规则进行公告,请在确认后修改本通告。本WIKI编辑权限开放,欢迎收藏起来防止迷路,也希望有爱的小伙伴和我们一起编辑哟~

全站通知:

数字对照表

阅读

    

2026-05-04更新

    

最新编辑:astatine_213

阅读:

  

更新日期:2026-05-04

  

最新编辑:astatine_213

来自UniversalPaperclipsWIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
astatine_213
Universal Paperclips 数量后缀表
游戏词缀 (短标尺) 科学计数法
(无) 10^0
thousand 10^3
million 10^6
billion 10^9
trillion 10^12
quadrillion 10^15
quintillion 10^18
sextillion 10^21
septillion 10^24
octillion 10^27
nonillion 10^30
decillion 10^33
undecillion 10^36
duodecillion 10^39
tredecillion 10^42
quattuordecillion 10^45
quindecillion 10^48
sexdecillion 10^51
septendecillion 10^54
octodecillion 10^57
novemdecillion 10^60
vigintillion 10^63
unvigintillion 10^66
duovigintillion 10^69
trevigintillion 10^72
quattuorvigintillion 10^75
quinvigintillion 10^78
sexvigintillion 10^81
septenvigintillion 10^84
octovigintillion 10^87
novemvigintillion 10^90
trigintillion 10^93
untrigintillion 10^96
duotrigintillion 10^99
tretrigintillion 10^102
quattuortrigintillion 10^105
quintrigintillion 10^108
sextrigintillion 10^111
septentrigintillion 10^114
octotrigintillion 10^117
novemtrigintillion 10^120
quadragintillion 10^123
unquadragintillion 10^126
duoquadragintillion 10^129
trequadragintillion 10^132
quattuorquadragintillion 10^135
quinquadragintillion 10^138
sexquadragintillion 10^141
septenquadragintillion 10^144
octoquadragintillion 10^147
novemquadragintillion 10^150
quinquagintillion 10^153
unquinquagintillion 10^156
duoquinquagintillion 10^159
trequinquagintillion 10^162
quattuorquinquagintillion 10^165
quinquinquagintillion 10^168
sexquinquagintillion 10^171
septenquinquagintillion 10^174
octoquinquagintillion 10^177
novemquinquagintillion 10^180
sexagintillion 10^183
unsexagintillion 10^186
duosexagintillion 10^189
tresexagintillion 10^192
quattuorsexagintillion 10^195
quinsexagintillion 10^198
sexsexagintillion 10^201
septsexagintillion 10^204
octosexagintillion 10^207
octosexagintillion (bug,应为 novemsexagintillion) 10^210
septuagintillion 10^213
unseptuagintillion 10^216
duoseptuagintillion 10^219
treseptuagintillion 10^222
quinseptuagintillion 10^225
sexseptuagintillion 10^228
septseptuagintillion 10^231
octoseptuagintillion 10^234
novemseptuagintillion 10^237
octogintillion 10^240
unoctogintillion 10^243
duooctogintillion 10^246
treoctogintillion 10^249
quattuoroctogintillion 10^252
quinoctogintillion 10^255
sexoctogintillion 10^258
septoctogintillion 10^261
octooctogintillion 10^264
novemoctogintillion 10^267
nonagintillion 10^270
unnonagintillion 10^273
duononagintillion 10^276
trenonagintillion 10^279
quattuornonagintillion 10^282
quinnonagintillion 10^285
sexnonagintillion 10^288
septnonagintillion 10^291
octononagintillion 10^294
novemnonagintillion 10^297
centillion 10^300

本表格从main.js中整理得到。该游戏源代码未加密,大数词条位于 main.js中行3629处定义的变量placeValue

该列表存在两个bug:

1.octosexagintillion 重复出现(索引 69 和 70),索引 70 按拉丁规律应为 novemsexagintillion

2.某些 -septuagintillion 段缺失了 quattuorseptuagintillion 和 octoseptuagintillion 等词缀

源代码如下:

var oneToTen = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"],
    elevenToNineteen = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'],
    multipleOfTen = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'],
    placeValue = ["", " thousand ", " million ", " billion ", " trillion ", " quadrillion ", " quintillion ", " sextillion ", " septillion ", " octillion ", " nonillion ", " decillion ", " undecillion ", " duodecillion ", " tredecillion ", " quattuordecillion ", " quindecillion ", " sexdecillion ", " septendecillion ", " octodecillion ", " novemdecillion  ", " vigintillion ", " unvigintillion ", " duovigintillion ", " trevigintillion ", " quattuorvigintillion ", " quinvigintillion ", " sexvigintillion ", " septenvigintillion ", " octovigintillion ", " novemvigintillion ", " trigintillion ", " untrigintillion ", " duotrigintillion ", " tretrigintillion ", " quattuortrigintillion ", " quintrigintillion ", " sextrigintillion ", " septentrigintillion ", " octotrigintillion ", " novemtrigintillion ", " quadragintillion ", " unquadragintillion ", " duoquadragintillion ", " trequadragintillion ", " quattuorquadragintillion ", " quinquadragintillion ", " sexquadragintillion ", " septenquadragintillion ", " octoquadragintillion ", " novemquadragintillion ", " quinquagintillion ", " unquinquagintillion ", " duoquinquagintillion ", " trequinquagintillion ", " quattuorquinquagintillion ", " quinquinquagintillion ", " sexquinquagintillion ", " septenquinquagintillion ", " octoquinquagintillion ", " novemquinquagintillion ", " sexagintillion ", " unsexagintillion ", " duosexagintillion ", " tresexagintillion ", " quattuorsexagintillion ", " quinsexagintillion ", " sexsexagintillion ", " septsexagintillion ", " octosexagintillion ", " octosexagintillion ", " septuagintillion ", " unseptuagintillion ", " duoseptuagintillion ", " treseptuagintillion ", " quinseptuagintillion"," sexseptuagintillion"," septseptuagintillion"," octoseptuagintillion"," novemseptuagintillion"," octogintillion"," unoctogintillion"," duooctogintillion"," treoctogintillion"," quattuoroctogintillion"," quinoctogintillion"," sexoctogintillion"," septoctogintillion"," octooctogintillion"," novemoctogintillion"," nonagintillion"," unnonagintillion"," duononagintillion", " trenonagintillion "," quattuornonagintillion "," quinnonagintillion "," sexnonagintillion "," septnonagintillion "," octononagintillion "," novemnonagintillion ", " centillion"];

用于显示大数的函数位于main.js行3631处spellf(已注释具体功能):

function spellf(userInput) {
    var numToWorkOn;

    // 调试用:已被注释掉的可用物质日志打印
    // (原作者在调试 availableMatter 值时留下的死代码)
    //        if (userInput === availableMatter)
    //        {
    //         console.log("_______");
    //         console.log(userInput);
    //        }

    // 为数字命名系统中所有唯一名称创建映射(已通过 placeValue 数组实现)


    // 检查 spell 是否作为普通函数调用:spell(123) 或 window.spell(123)
    // 该函数最初可能设计为既可作为独立函数也可作为 String 方法调用
    // 但实际游戏中未使用该功能
    if (userInput < 0) {
        // 负数直接打印错误并返回原始字符串
        console.log("Error, value less than 0");
        return userInput.toString();
    }

    // 如果输入是数字或字符串类型,转换为字符串以供后续处理
    if (typeof(userInput) == "number" || typeof(userInput) == "string") {
        numToWorkOn = "" + userInput;
    }
    // 检查是否作为 Number/String 对象的方法调用:如 "123".spell() 或 123..spell()
    // 这种用法在游戏中实际未使用
    else if (typeof(this) == "object") {
        numToWorkOn = this.toString();
    }
    // 非法输入则抛出异常
    else {
        throw new Error("Invalid Input");
        return;
    }

    // ── 处理科学计数法(e+ 格式)──────────────────────────────────
    // 将 "1.5e+27" 这种形式展开为完整的数字字符串 "1500000000000000000000000000"
    if (numToWorkOn.indexOf("e+") !== -1) {
        var splittedExponentNum = numToWorkOn.split("e+"),  // ["1.5", "27"]
            exponent = splittedExponentNum[1],              // 指数部分 "27"
            str = '';

        // 如果底数含小数点,还需调整指数
        if (numToWorkOn.indexOf(".") !== -1) {
            numToWorkOn = splittedExponentNum[0].split("."); // ["1", "5"]
            // 小数部分长度要从指数中扣减(因为小数展开后会吃掉这些位)
            exponent -= numToWorkOn[1].length;              // 27 - 1 = 26
            numToWorkOn = numToWorkOn.join("");             // "15"
        }
        // 不含小数点则底数直接取整
        else {
            numToWorkOn = splittedExponentNum[0];
        }

        // 在末位追补剩余的所有零
        while (exponent--) {
            str = str + '0';
        }
        numToWorkOn = numToWorkOn + str;                    // "15" + "00000000000000000000000000"
    }
    // ── 处理普通小数(含 "." 但不含 "e+")─────────────────────
    // 直接截断取整数部分,小数部分丢弃
    else if (numToWorkOn.indexOf(".") !== -1) {
        var splittedDecimal = numToWorkOn.split(".");
        var leftNum = splittedDecimal[0];   // 整数部分
        var rightNum = splittedDecimal[1];  // 小数部分(未使用,仅保留变量)
        numToWorkOn = leftNum;
    }

    // ── 长度上限检查 ──────────────────────────────────────────
    // placeValue 数组当前最多支持到 centillion (10^300)
    // 若数字超过 302 位,抛出异常
    if (numToWorkOn.length >= 303) {
        throw new Error("Number out of bonds!");  // 原代码拼写错误:bonds → bounds
        return;
    } else {
        return convertToString(numToWorkOn);
    }

    /**
     * 核心递归逻辑:将数字字符串按每三位一组拆分,每组附加对应位值后缀
     * 例如 "1234567" → 从低位起: "567" + "" = "567", "234" + " thousand " = "234.0 thousand"
     * 最终拼接为 "1.2 million, 234.0 thousand, 567"
     *
     * @param {string} stringEquivalent - 纯数字字符串(不含符号和小数点)
     * @returns {string} 格式化后的结果字符串
     */
    function convertToString(stringEquivalent) {
        if (stringEquivalent == 0) {
            return '0';
        }

        var result = '',
            unitLookup = 0,                              // 位值数组索引计数器
            strLength = stringEquivalent.length;

        // 从字符串尾部向头部遍历,每次取三位
        for (var k = strLength; k > 0; k = k - 3) {

            // 当剩余长度 ≤ 3 时,取出最高位组(可能不足三位)
            if (k - 3 <= 0) {
                var subStr = stringEquivalent.substring(k, k - 3);
                pronounce = pronounceNum(subStr);

                // 如果该组发音不为 "zero",则附加对应后缀
                if (pronounce.toUpperCase() != 'zero') {
                    // subStr + "." + 后两位数字 → 构成带小数精度的数值
                    var num = Number(subStr + "." + stringEquivalent.substring(subStr.length, subStr.length + 2));
                    // 用 formatWithCommas 格式化整数部分,拼接 placeValue 后缀
                    result = formatWithCommas(num, 1) + placeValue[unitLookup] + ' , ' + result;
                }
            }
            unitLookup++;
        }

        // 去除末尾多余的 " , " 分隔符
        // 例如 "1.2 million , 234.0 thousand , 567 , " → trim 掉最后 3 个字符
        return result.substring(0, result.length - 3);
    }

    /**
     * 判断输入数值的范围,并调用对应的发音函数
     * @param {string|number} val - 数值
     * @returns {string} 英文拼写
     */
    function pronounceNum(val) {
        val = parseInt(val);
        if (parseInt(val / 10) == 0) {
            return numLessThan10(val);          // 个位数 (0~9)
        } else if (parseInt(val / 100) == 0) {
            return numLessThan99(val);          // 两位数 (10~99)
        } else {
            return numLessThan1000(val);        // 三位数 (100~999)
        }
    }

    /**
     * 将小于 1000 的数拼写为英文
     * 例如 256 → "two hundred fifty six"
     * @param {number} val
     * @returns {string}
     */
    function numLessThan1000(val) {
        val = Number(val);
        var hundredPlace = parseInt(val / 100),  // 百位数
            result;
        if (val % 100 == 0) {
            // 整百:如 "three hundred "
            result = oneToTen[hundredPlace] + " hundred ";
        } else {
            // 非整百:百位 + 余数部分
            result = oneToTen[hundredPlace] + " hundred " + numLessThan99(val % 100);
        }
        return result;
    }

    /**
     * 将小于 99 的数拼写为英文
     * 例如 42 → "forty two"
     * @param {number} val
     * @returns {string}
     */
    function numLessThan99(val) {
        val = Number(val);
        var tenthPlace = parseInt(val / 10),  // 十位数
            result;
        if (tenthPlace !== 1) {
            // 20~99:十位拼写 + 个位拼写
            val % 10
                ? (result = multipleOfTen[tenthPlace] + " " + numLessThan10(val % 10))
                : (result = multipleOfTen[tenthPlace]);  // 整十,如 "forty"
            return result;
        } else {
            // 10~19:直接查表
            result = elevenToNineteen[val % 10];
            return result;
        }
    }

    /**
     * 将小于 10 的数拼写为英文
     * @param {number} val
     * @returns {string}
     */
    function numLessThan10(val) {
        val = Number(val);
        return oneToTen[val];
    };
}