[{"content":" 抽水计算器（利润率） 输入双方赔率 赔率格式 小数 分数 美式 方1赔率 结果1的赔率（例如：A队或大） 方2赔率 结果2的赔率（例如：B队或小） 结果 抽水 % - - 隐含概率（方1） - 隐含概率（方2） - 公平赔率（方1） - 公平赔率（方2） - 无抽水概率（方1） - 无抽水概率（方2） - 抽水（vig/juice）是庄家的内置利润率。抽水越低 = 价值越好。典型：盘口4-5%，总分6-8%。 重置 ","permalink":"https://calculators-odds.com/zh/hold-calculator/","summary":"\u003cstyle\u003e\n    .hold {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .hold__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .hold__container {\n        width: 100%;\n        max-width: 700px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .hold__section {\n        background: #2d333b;\n        color: #e8e8e8;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .hold__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #2196F3;\n        color: #2196F3;\n    }\n\n    .hold__row {\n        display: flex;\n        gap: 15px;\n        margin-bottom: 15px;\n    }\n\n    .hold__row:last-child {\n        margin-bottom: 0;\n    }\n\n    .hold__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n        min-width: 140px;\n    }\n\n    .hold__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .hold__input, .hold__select {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .hold__input:focus, .hold__select:focus {\n        outline: none;\n        border-color: #2196F3;\n    }\n\n    .hold__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .hold__select {\n        cursor: pointer;\n    }\n\n    .hold__select option {\n        background: #2d333b;\n        color: #e8e8e8;\n    }\n\n    .hold__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .hold__output {\n        background: #2d333b;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .hold__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .hold__result-box {\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n        border-radius: 8px;\n        padding: 20px;\n        text-align: center;\n        margin-bottom: 20px;\n    }\n\n    .hold__result-box.high-hold {\n        background: rgba(244, 67, 54, 0.15);\n        border-color: #f44336;\n    }\n\n    .hold__result-label {\n        font-size: 14px;\n        margin-bottom: 8px;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .hold__result-value {\n        font-size: 32px;\n        font-weight: bold;\n        color: #4CAF50;\n    }\n\n    .hold__result-box.high-hold .hold__result-value {\n        color: #f44336;\n    }\n\n    .hold__result-hint {\n        font-size: 12px;\n        margin-top: 8px;\n        color: rgba(232, 232, 232, 0.6);\n    }\n\n    .hold__grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .hold__grid-item {\n        background: rgba(255, 255, 255, 0.05);\n        padding: 15px;\n        border-radius: 6px;\n        text-align: center;\n    }\n\n    .hold__grid-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .hold__grid-value {\n        font-size: 18px;\n        font-weight: bold;\n    }\n\n    .hold__info {\n        margin-top: 15px;\n        padding: 12px 15px;\n        background: rgba(33, 150, 243, 0.15);\n        border: 1px solid rgba(33, 150, 243, 0.3);\n        border-radius: 4px;\n        font-size: 13px;\n        text-align: center;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .hold__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n    }\n\n    .hold__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 600px) {\n        .hold__row {\n            flex-direction: column;\n        }\n        .hold__grid {\n            grid-template-columns: 1fr;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"hold\"\u003e\n    \u003cdiv class=\"hold__title\"\u003e抽水计算器（利润率）\u003c/div\u003e\n\n    \u003cdiv class=\"hold__container\"\u003e\n        \n        \u003cdiv class=\"hold__section\"\u003e\n            \u003cdiv class=\"hold__section-title\"\u003e输入双方赔率\u003c/div\u003e\n            \u003cdiv class=\"hold__row\"\u003e\n                \u003cdiv class=\"hold__input-group\"\u003e\n                    \u003clabel class=\"hold__label\"\u003e赔率格式\u003c/label\u003e\n                    \u003cselect class=\"hold__select hold__format\"\u003e\n                        \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n                        \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n                        \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n                    \u003c/select\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"hold__row\"\u003e\n                \u003cdiv class=\"hold__input-group\"\u003e\n                    \u003clabel class=\"hold__label\"\u003e方1赔率\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"hold__input hold__odds1\" placeholder=\"1.91\" /\u003e\n                    \u003cspan class=\"hold__hint\"\u003e结果1的赔率（例如：A队或大）\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hold__input-group\"\u003e\n                    \u003clabel class=\"hold__label\"\u003e方2赔率\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"hold__input hold__odds2\" placeholder=\"1.91\" /\u003e\n                    \u003cspan class=\"hold__hint\"\u003e结果2的赔率（例如：B队或小）\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"hold__output\"\u003e\n            \u003cdiv class=\"hold__output-title\"\u003e结果\u003c/div\u003e\n\n            \u003cdiv class=\"hold__result-box hold__hold-box\"\u003e\n                \u003cdiv class=\"hold__result-label\"\u003e抽水 %\u003c/div\u003e\n                \u003cdiv class=\"hold__result-value hold__hold-value\"\u003e-\u003c/div\u003e\n                \u003cdiv class=\"hold__result-hint hold__hold-hint\"\u003e-\u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"hold__grid\"\u003e\n                \u003cdiv class=\"hold__grid-item\"\u003e\n                    \u003cdiv class=\"hold__grid-label\"\u003e隐含概率（方1）\u003c/div\u003e\n                    \u003cdiv class=\"hold__grid-value hold__ip1\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hold__grid-item\"\u003e\n                    \u003cdiv class=\"hold__grid-label\"\u003e隐含概率（方2）\u003c/div\u003e\n                    \u003cdiv class=\"hold__grid-value hold__ip2\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hold__grid-item\"\u003e\n                    \u003cdiv class=\"hold__grid-label\"\u003e公平赔率（方1）\u003c/div\u003e\n                    \u003cdiv class=\"hold__grid-value hold__fo1\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hold__grid-item\"\u003e\n                    \u003cdiv class=\"hold__grid-label\"\u003e公平赔率（方2）\u003c/div\u003e\n                    \u003cdiv class=\"hold__grid-value hold__fo2\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hold__grid-item\"\u003e\n                    \u003cdiv class=\"hold__grid-label\"\u003e无抽水概率（方1）\u003c/div\u003e\n                    \u003cdiv class=\"hold__grid-value hold__fp1\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hold__grid-item\"\u003e\n                    \u003cdiv class=\"hold__grid-label\"\u003e无抽水概率（方2）\u003c/div\u003e\n                    \u003cdiv class=\"hold__grid-value hold__fp2\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"hold__info\"\u003e\n                抽水（vig/juice）是庄家的内置利润率。抽水越低 = 价值越好。典型：盘口4-5%，总分6-8%。\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cbutton class=\"hold__reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const formatSelect = container.querySelector('.hold__format');\n    const odds1Input = container.querySelector('.hold__odds1');\n    const odds2Input = container.querySelector('.hold__odds2');\n\n    const holdBox = container.querySelector('.hold__hold-box');\n    const holdValue = container.querySelector('.hold__hold-value');\n    const holdHint = container.querySelector('.hold__hold-hint');\n    const ip1 = container.querySelector('.hold__ip1');\n    const ip2 = container.querySelector('.hold__ip2');\n    const fo1 = container.querySelector('.hold__fo1');\n    const fo2 = container.querySelector('.hold__fo2');\n    const fp1 = container.querySelector('.hold__fp1');\n    const fp2 = container.querySelector('.hold__fp2');\n    const resetBtn = container.querySelector('.hold__reset');\n\n    function validateFractionalCoefficient(c) { return /^\\d+\\/\\d+$/.test(c); }\n    function validateDecimalCoefficient(c) { return /^\\d+(\\.\\d+)?$/.test(c) \u0026\u0026 parseFloat(c) \u003e 1; }\n    function validateAmericanCoefficient(c) { return /^[-+]?\\d+$/.test(c); }\n\n    function convertFractionToDecimal(f) {\n        var p = f.split('/');\n        if (p.length !== 2) return null;\n        var n = parseFloat(p[0]), d = parseFloat(p[1]);\n        if (isNaN(n) || isNaN(d) || d === 0) return null;\n        return (n / d) + 1;\n    }\n\n    function convertAmericanToDecimal(a) {\n        var v = parseFloat(a);\n        if (isNaN(v)) return null;\n        if (v \u003e 0) return (v / 100) + 1;\n        if (v \u003c 0) return (100 / Math.abs(v)) + 1;\n        return 2;\n    }\n\n    function getDecimal(input) {\n        var fmt = formatSelect.value;\n        var val = input.value.trim();\n        if (fmt === 'Fractional') {\n            if (!validateFractionalCoefficient(val)) return null;\n            return convertFractionToDecimal(val);\n        } else if (fmt === 'Decimal') {\n            if (!validateDecimalCoefficient(val)) return null;\n            return parseFloat(val);\n        } else if (fmt === 'American') {\n            if (!validateAmericanCoefficient(val)) return null;\n            return convertAmericanToDecimal(val);\n        }\n        return null;\n    }\n\n    function calculate() {\n        var dec1 = getDecimal(odds1Input);\n        var dec2 = getDecimal(odds2Input);\n\n        if (dec1 === null || dec1 \u003c= 1) {\n            if (odds1Input.value.trim()) odds1Input.classList.add('invalid');\n            resetOutput(); return;\n        } else { odds1Input.classList.remove('invalid'); }\n\n        if (dec2 === null || dec2 \u003c= 1) {\n            if (odds2Input.value.trim()) odds2Input.classList.add('invalid');\n            resetOutput(); return;\n        } else { odds2Input.classList.remove('invalid'); }\n\n        \n        var prob1 = 1 / dec1;\n        var prob2 = 1 / dec2;\n        var totalProb = prob1 + prob2;\n        var hold = (totalProb - 1) * 100;\n\n        \n        var fairP1 = prob1 / totalProb;\n        var fairP2 = prob2 / totalProb;\n\n        \n        var fairO1 = 1 / fairP1;\n        var fairO2 = 1 / fairP2;\n\n        holdValue.textContent = hold.toFixed(2) + '%';\n        holdBox.classList.toggle('high-hold', hold \u003e 5);\n\n        if (hold \u003c= 3) {\n            holdHint.textContent = '低抽水 - 好价值';\n        } else if (hold \u003c= 5) {\n            holdHint.textContent = '平均抽水';\n        } else if (hold \u003c= 8) {\n            holdHint.textContent = '高抽水 - 低于平均价值';\n        } else {\n            holdHint.textContent = '非常高抽水 - 差价值';\n        }\n\n        ip1.textContent = (prob1 * 100).toFixed(1) + '%';\n        ip2.textContent = (prob2 * 100).toFixed(1) + '%';\n\n        fp1.textContent = (fairP1 * 100).toFixed(1) + '%';\n        fp2.textContent = (fairP2 * 100).toFixed(1) + '%';\n\n        fo1.textContent = fairO1.toFixed(3);\n        fo2.textContent = fairO2.toFixed(3);\n    }\n\n    function resetOutput() {\n        holdValue.textContent = '-';\n        holdHint.textContent = '-';\n        holdBox.classList.remove('high-hold');\n        ip1.textContent = '-'; ip2.textContent = '-';\n        fo1.textContent = '-'; fo2.textContent = '-';\n        fp1.textContent = '-'; fp2.textContent = '-';\n    }\n\n    function resetAll() {\n        odds1Input.value = ''; odds2Input.value = '';\n        formatSelect.selectedIndex = 0;\n        odds1Input.classList.remove('invalid');\n        odds2Input.classList.remove('invalid');\n        updatePlaceholders();\n        resetOutput();\n    }\n\n    function updatePlaceholders() {\n        var fmt = formatSelect.value;\n        if (fmt === 'Fractional') {\n            odds1Input.placeholder = '10/11';\n            odds2Input.placeholder = '10/11';\n        } else if (fmt === 'Decimal') {\n            odds1Input.placeholder = '1.91';\n            odds2Input.placeholder = '1.91';\n        } else if (fmt === 'American') {\n            odds1Input.placeholder = '-110';\n            odds2Input.placeholder = '-110';\n        }\n    }\n\n    formatSelect.addEventListener('change', function() { updatePlaceholders(); calculate(); });\n    odds1Input.addEventListener('input', calculate);\n    odds2Input.addEventListener('input', calculate);\n    resetBtn.addEventListener('click', resetAll);\n\n    updatePlaceholders();\n})();\n\u003c/script\u003e","title":"Hold计算器 - 博彩公司利润率"},{"content":" 奖金投注转换计算器 步骤1：奖金投注详情 奖金投注金额 您的免费投注或奖金金额 奖金投注类型 免费投注（本金不退还） 免费投注（本金退还） 无风险投注 SNR = 仅返还利润，SR = 全额支付，无风险 = 输了退款 步骤2：赔率与交易所 赔率格式 小数 分数 美式 买入赔率 下注奖金投注的赔率 卖出赔率（交易所） 交易所卖出赔率（留空获取理论价值） 交易所佣金 (%) Betfair ~5%, Smarkets ~2% 结果 实际现金价值 - 转换率: - 卖出投注额 - 卖出负债 - 买入赢时利润 - 卖出赢时利润 - 赔率越高 = 转换率越高。SNR免费投注请使用4.00\u0026#43;赔率以达到70%\u0026#43;转换。 重置 ","permalink":"https://calculators-odds.com/zh/bonus-bet-calculator/","summary":"\u003cstyle\u003e\n    .bonusbet {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .bonusbet__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .bonusbet__container {\n        width: 100%;\n        max-width: 700px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .bonusbet__section {\n        background: #2d333b;\n        color: #e8e8e8;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .bonusbet__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #2196F3;\n        color: #2196F3;\n    }\n\n    .bonusbet__row {\n        display: flex;\n        gap: 15px;\n        margin-bottom: 15px;\n    }\n\n    .bonusbet__row:last-child {\n        margin-bottom: 0;\n    }\n\n    .bonusbet__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n        min-width: 140px;\n    }\n\n    .bonusbet__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .bonusbet__input, .bonusbet__select {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .bonusbet__input:focus, .bonusbet__select:focus {\n        outline: none;\n        border-color: #2196F3;\n    }\n\n    .bonusbet__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .bonusbet__select {\n        cursor: pointer;\n    }\n\n    .bonusbet__select option {\n        background: #2d333b;\n        color: #e8e8e8;\n    }\n\n    .bonusbet__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .bonusbet__output {\n        background: #2d333b;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .bonusbet__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .bonusbet__result-box {\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n        border-radius: 8px;\n        padding: 20px;\n        text-align: center;\n        margin-bottom: 20px;\n    }\n\n    .bonusbet__result-label {\n        font-size: 14px;\n        margin-bottom: 8px;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .bonusbet__result-value {\n        font-size: 32px;\n        font-weight: bold;\n        color: #4CAF50;\n    }\n\n    .bonusbet__result-sub {\n        font-size: 14px;\n        color: rgba(232, 232, 232, 0.6);\n        margin-top: 6px;\n    }\n\n    .bonusbet__grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .bonusbet__grid-item {\n        background: rgba(255, 255, 255, 0.05);\n        padding: 15px;\n        border-radius: 6px;\n        text-align: center;\n    }\n\n    .bonusbet__grid-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .bonusbet__grid-value {\n        font-size: 20px;\n        font-weight: bold;\n    }\n\n    .bonusbet__grid-value.positive {\n        color: #4CAF50;\n    }\n\n    .bonusbet__grid-value.negative {\n        color: #f44336;\n    }\n\n    .bonusbet__info {\n        margin-top: 15px;\n        padding: 12px 15px;\n        background: rgba(33, 150, 243, 0.15);\n        border: 1px solid rgba(33, 150, 243, 0.3);\n        border-radius: 4px;\n        font-size: 13px;\n        text-align: center;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .bonusbet__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n    }\n\n    .bonusbet__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 600px) {\n        .bonusbet__row {\n            flex-direction: column;\n        }\n        .bonusbet__grid {\n            grid-template-columns: 1fr;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"bonusbet\"\u003e\n    \u003cdiv class=\"bonusbet__title\"\u003e奖金投注转换计算器\u003c/div\u003e\n\n    \u003cdiv class=\"bonusbet__container\"\u003e\n        \n        \u003cdiv class=\"bonusbet__section\"\u003e\n            \u003cdiv class=\"bonusbet__section-title\"\u003e步骤1：奖金投注详情\u003c/div\u003e\n            \u003cdiv class=\"bonusbet__row\"\u003e\n                \u003cdiv class=\"bonusbet__input-group\"\u003e\n                    \u003clabel class=\"bonusbet__label\"\u003e奖金投注金额\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"bonusbet__input bonusbet__amount\" placeholder=\"50\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"bonusbet__hint\"\u003e您的免费投注或奖金金额\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"bonusbet__input-group\"\u003e\n                    \u003clabel class=\"bonusbet__label\"\u003e奖金投注类型\u003c/label\u003e\n                    \u003cselect class=\"bonusbet__select bonusbet__type\"\u003e\n                        \u003coption value=\"snr\"\u003e免费投注（本金不退还）\u003c/option\u003e\n                        \u003coption value=\"sr\"\u003e免费投注（本金退还）\u003c/option\u003e\n                        \u003coption value=\"riskfree\"\u003e无风险投注\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"bonusbet__hint\"\u003eSNR = 仅返还利润，SR = 全额支付，无风险 = 输了退款\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"bonusbet__section\"\u003e\n            \u003cdiv class=\"bonusbet__section-title\"\u003e步骤2：赔率与交易所\u003c/div\u003e\n            \u003cdiv class=\"bonusbet__row\"\u003e\n                \u003cdiv class=\"bonusbet__input-group\"\u003e\n                    \u003clabel class=\"bonusbet__label\"\u003e赔率格式\u003c/label\u003e\n                    \u003cselect class=\"bonusbet__select bonusbet__format\"\u003e\n                        \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n                        \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n                        \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n                    \u003c/select\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"bonusbet__input-group\"\u003e\n                    \u003clabel class=\"bonusbet__label\"\u003e买入赔率\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"bonusbet__input bonusbet__back-odds\" placeholder=\"4.00\" /\u003e\n                    \u003cspan class=\"bonusbet__hint\"\u003e下注奖金投注的赔率\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"bonusbet__row\"\u003e\n                \u003cdiv class=\"bonusbet__input-group\"\u003e\n                    \u003clabel class=\"bonusbet__label\"\u003e卖出赔率（交易所）\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"bonusbet__input bonusbet__lay-odds\" placeholder=\"4.10\" /\u003e\n                    \u003cspan class=\"bonusbet__hint\"\u003e交易所卖出赔率（留空获取理论价值）\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"bonusbet__input-group\"\u003e\n                    \u003clabel class=\"bonusbet__label\"\u003e交易所佣金 (%)\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"bonusbet__input bonusbet__commission\" placeholder=\"5\" value=\"5\" min=\"0\" max=\"100\" step=\"0.1\" /\u003e\n                    \u003cspan class=\"bonusbet__hint\"\u003eBetfair ~5%, Smarkets ~2%\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"bonusbet__output\"\u003e\n            \u003cdiv class=\"bonusbet__output-title\"\u003e结果\u003c/div\u003e\n\n            \u003cdiv class=\"bonusbet__result-box\"\u003e\n                \u003cdiv class=\"bonusbet__result-label\"\u003e实际现金价值\u003c/div\u003e\n                \u003cdiv class=\"bonusbet__result-value bonusbet__real-value\"\u003e-\u003c/div\u003e\n                \u003cdiv class=\"bonusbet__result-sub bonusbet__conversion-rate\"\u003e转换率: -\u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"bonusbet__grid\"\u003e\n                \u003cdiv class=\"bonusbet__grid-item\"\u003e\n                    \u003cdiv class=\"bonusbet__grid-label\"\u003e卖出投注额\u003c/div\u003e\n                    \u003cdiv class=\"bonusbet__grid-value bonusbet__lay-stake-result\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"bonusbet__grid-item\"\u003e\n                    \u003cdiv class=\"bonusbet__grid-label\"\u003e卖出负债\u003c/div\u003e\n                    \u003cdiv class=\"bonusbet__grid-value bonusbet__liability-result\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"bonusbet__grid-item\"\u003e\n                    \u003cdiv class=\"bonusbet__grid-label\"\u003e买入赢时利润\u003c/div\u003e\n                    \u003cdiv class=\"bonusbet__grid-value bonusbet__profit-back\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"bonusbet__grid-item\"\u003e\n                    \u003cdiv class=\"bonusbet__grid-label\"\u003e卖出赢时利润\u003c/div\u003e\n                    \u003cdiv class=\"bonusbet__grid-value bonusbet__profit-lay\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"bonusbet__info bonusbet__tip\"\u003e\n                赔率越高 = 转换率越高。SNR免费投注请使用4.00\u0026#43;赔率以达到70%\u0026#43;转换。\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cbutton class=\"bonusbet__reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const amountInput = container.querySelector('.bonusbet__amount');\n    const typeSelect = container.querySelector('.bonusbet__type');\n    const formatSelect = container.querySelector('.bonusbet__format');\n    const backOddsInput = container.querySelector('.bonusbet__back-odds');\n    const layOddsInput = container.querySelector('.bonusbet__lay-odds');\n    const commissionInput = container.querySelector('.bonusbet__commission');\n\n    const realValueEl = container.querySelector('.bonusbet__real-value');\n    const conversionRateEl = container.querySelector('.bonusbet__conversion-rate');\n    const layStakeEl = container.querySelector('.bonusbet__lay-stake-result');\n    const liabilityEl = container.querySelector('.bonusbet__liability-result');\n    const profitBackEl = container.querySelector('.bonusbet__profit-back');\n    const profitLayEl = container.querySelector('.bonusbet__profit-lay');\n\n    const resetBtn = container.querySelector('.bonusbet__reset');\n\n    function validateFractionalCoefficient(c) { return /^\\d+\\/\\d+$/.test(c); }\n    function validateDecimalCoefficient(c) { return /^\\d+(\\.\\d+)?$/.test(c) \u0026\u0026 parseFloat(c) \u003e 1; }\n    function validateAmericanCoefficient(c) { return /^[-+]?\\d+$/.test(c); }\n\n    function convertFractionToDecimal(f) {\n        var p = f.split('/');\n        if (p.length !== 2) return null;\n        var n = parseFloat(p[0]), d = parseFloat(p[1]);\n        if (isNaN(n) || isNaN(d) || d === 0) return null;\n        return (n / d) + 1;\n    }\n\n    function convertAmericanToDecimal(a) {\n        var v = parseFloat(a);\n        if (isNaN(v)) return null;\n        if (v \u003e 0) return (v / 100) + 1;\n        if (v \u003c 0) return (100 / Math.abs(v)) + 1;\n        return 2;\n    }\n\n    function getDecimal(input) {\n        var fmt = formatSelect.value;\n        var val = input.value.trim();\n        if (fmt === 'Fractional') {\n            if (!validateFractionalCoefficient(val)) return null;\n            return convertFractionToDecimal(val);\n        } else if (fmt === 'Decimal') {\n            if (!validateDecimalCoefficient(val)) return null;\n            return parseFloat(val);\n        } else if (fmt === 'American') {\n            if (!validateAmericanCoefficient(val)) return null;\n            return convertAmericanToDecimal(val);\n        }\n        return null;\n    }\n\n    function calculate() {\n        var bonus = parseFloat(amountInput.value);\n        var betType = typeSelect.value;\n        var backDec = getDecimal(backOddsInput);\n        var commission = parseFloat(commissionInput.value) / 100;\n        if (isNaN(commission)) commission = 0.05;\n\n        \n        if (backDec === null || backDec \u003c= 1) {\n            if (backOddsInput.value.trim()) backOddsInput.classList.add('invalid');\n            resetOutput();\n            return;\n        } else {\n            backOddsInput.classList.remove('invalid');\n        }\n\n        if (isNaN(bonus) || bonus \u003c= 0) { resetOutput(); return; }\n\n        \n        var layVal = layOddsInput.value.trim();\n        var layDec = null;\n        if (layVal) {\n            layDec = getDecimal(layOddsInput);\n            if (layDec === null || layDec \u003c= 1) {\n                layOddsInput.classList.add('invalid');\n                resetOutput();\n                return;\n            } else {\n                layOddsInput.classList.remove('invalid');\n            }\n        } else {\n            layOddsInput.classList.remove('invalid');\n        }\n\n        var layStake, liability, profitBack, profitLay, guaranteedProfit, convRate;\n\n        if (betType === 'snr') {\n            \n            if (layDec) {\n                layStake = (bonus * (backDec - 1)) / (layDec - commission);\n                liability = layStake * (layDec - 1);\n                profitBack = bonus * (backDec - 1) - liability;\n                profitLay = layStake * (1 - commission);\n                guaranteedProfit = Math.min(profitBack, profitLay);\n                convRate = (guaranteedProfit / bonus) * 100;\n            } else {\n                \n                guaranteedProfit = bonus * (backDec - 1) / backDec;\n                convRate = (guaranteedProfit / bonus) * 100;\n                layStake = null;\n            }\n        } else if (betType === 'sr') {\n            \n            if (layDec) {\n                layStake = (bonus * backDec) / (layDec - commission);\n                liability = layStake * (layDec - 1);\n                profitBack = bonus * backDec - liability;\n                profitLay = layStake * (1 - commission);\n                guaranteedProfit = Math.min(profitBack, profitLay);\n                convRate = (guaranteedProfit / bonus) * 100;\n            } else {\n                guaranteedProfit = bonus * (backDec - 1) / backDec + bonus / backDec;\n                convRate = (guaranteedProfit / bonus) * 100;\n                layStake = null;\n            }\n        } else {\n            \n            if (layDec) {\n                layStake = (bonus * backDec) / (layDec - commission);\n                liability = layStake * (layDec - 1);\n                \n                profitBack = bonus * (backDec - 1) - liability;\n                \n                profitLay = layStake * (1 - commission) - bonus + bonus;\n                profitLay = layStake * (1 - commission);\n                guaranteedProfit = Math.min(profitBack, profitLay);\n                convRate = (guaranteedProfit / bonus) * 100;\n            } else {\n                \n                guaranteedProfit = bonus * (1 - 1 / backDec);\n                convRate = (guaranteedProfit / bonus) * 100;\n                layStake = null;\n            }\n        }\n\n        \n        realValueEl.textContent = '$' + guaranteedProfit.toFixed(2);\n        conversionRateEl.textContent = '转换率: ' + convRate.toFixed(1) + '%';\n\n        if (layStake !== null) {\n            layStakeEl.textContent = '$' + layStake.toFixed(2);\n            liabilityEl.textContent = '$' + liability.toFixed(2);\n\n            profitBackEl.textContent = '$' + profitBack.toFixed(2);\n            profitBackEl.className = 'bonusbet__grid-value ' + (profitBack \u003e= 0 ? 'positive' : 'negative');\n\n            profitLayEl.textContent = '$' + profitLay.toFixed(2);\n            profitLayEl.className = 'bonusbet__grid-value ' + (profitLay \u003e= 0 ? 'positive' : 'negative');\n        } else {\n            layStakeEl.textContent = '-';\n            liabilityEl.textContent = '-';\n            profitBackEl.textContent = '-';\n            profitBackEl.className = 'bonusbet__grid-value';\n            profitLayEl.textContent = '-';\n            profitLayEl.className = 'bonusbet__grid-value';\n        }\n    }\n\n    function resetOutput() {\n        realValueEl.textContent = '-';\n        conversionRateEl.textContent = '转换率: -';\n        layStakeEl.textContent = '-';\n        liabilityEl.textContent = '-';\n        profitBackEl.textContent = '-';\n        profitBackEl.className = 'bonusbet__grid-value';\n        profitLayEl.textContent = '-';\n        profitLayEl.className = 'bonusbet__grid-value';\n    }\n\n    function resetAll() {\n        amountInput.value = '';\n        backOddsInput.value = '';\n        layOddsInput.value = '';\n        commissionInput.value = '5';\n        typeSelect.selectedIndex = 0;\n        formatSelect.selectedIndex = 0;\n        backOddsInput.classList.remove('invalid');\n        layOddsInput.classList.remove('invalid');\n        updatePlaceholders();\n        resetOutput();\n    }\n\n    function updatePlaceholders() {\n        var fmt = formatSelect.value;\n        if (fmt === 'Fractional') {\n            backOddsInput.placeholder = '3/1';\n            layOddsInput.placeholder = '3/1';\n        } else if (fmt === 'Decimal') {\n            backOddsInput.placeholder = '4.00';\n            layOddsInput.placeholder = '4.10';\n        } else if (fmt === 'American') {\n            backOddsInput.placeholder = '+300';\n            layOddsInput.placeholder = '+310';\n        }\n    }\n\n    formatSelect.addEventListener('change', function() { updatePlaceholders(); calculate(); });\n    amountInput.addEventListener('input', calculate);\n    typeSelect.addEventListener('change', calculate);\n    backOddsInput.addEventListener('input', calculate);\n    layOddsInput.addEventListener('input', calculate);\n    commissionInput.addEventListener('input', calculate);\n    resetBtn.addEventListener('click', resetAll);\n\n    updatePlaceholders();\n})();\n\u003c/script\u003e","title":"奖金投注转换计算器"},{"content":" 命中率计算器 输入您的投注记录 总投注数 投注的总次数 赢的投注数 赢的投注次数 平均赔率（小数） 投注的平均小数赔率 总投注额 总投注金额（可选） 总返还额 总返还金额（可选） 结果 命中率 - - 平衡 盈亏平衡命中率 - 优势 - 亏损率 - 每注平均盈亏 - 净盈亏 - 投资回报率 - 命中率显示投注的胜率。与盈亏平衡率比较，看您是否有优势。 重置 ","permalink":"https://calculators-odds.com/zh/strike-rate-calculator/","summary":"\u003cstyle\u003e\n    .strikerate {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .strikerate__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .strikerate__container {\n        width: 100%;\n        max-width: 700px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .strikerate__section {\n        background: #2d333b;\n        color: #e8e8e8;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .strikerate__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #2196F3;\n        color: #2196F3;\n    }\n\n    .strikerate__row {\n        display: flex;\n        gap: 15px;\n        margin-bottom: 15px;\n    }\n\n    .strikerate__row:last-child {\n        margin-bottom: 0;\n    }\n\n    .strikerate__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n        min-width: 140px;\n    }\n\n    .strikerate__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .strikerate__input {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .strikerate__input:focus {\n        outline: none;\n        border-color: #2196F3;\n    }\n\n    .strikerate__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .strikerate__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .strikerate__output {\n        background: #2d333b;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .strikerate__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .strikerate__result-box {\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n        border-radius: 8px;\n        padding: 20px;\n        text-align: center;\n        margin-bottom: 20px;\n    }\n\n    .strikerate__result-box.negative {\n        background: rgba(244, 67, 54, 0.15);\n        border-color: #f44336;\n    }\n\n    .strikerate__result-label {\n        font-size: 14px;\n        margin-bottom: 8px;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .strikerate__result-value {\n        font-size: 32px;\n        font-weight: bold;\n        color: #4CAF50;\n    }\n\n    .strikerate__result-box.negative .strikerate__result-value {\n        color: #f44336;\n    }\n\n    .strikerate__result-sub {\n        font-size: 14px;\n        color: rgba(232, 232, 232, 0.6);\n        margin-top: 6px;\n    }\n\n    .strikerate__grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .strikerate__grid-item {\n        background: rgba(255, 255, 255, 0.05);\n        padding: 15px;\n        border-radius: 6px;\n        text-align: center;\n    }\n\n    .strikerate__grid-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .strikerate__grid-value {\n        font-size: 18px;\n        font-weight: bold;\n    }\n\n    .strikerate__grid-value.positive {\n        color: #4CAF50;\n    }\n\n    .strikerate__grid-value.negative {\n        color: #f44336;\n    }\n\n    .strikerate__bar-container {\n        margin-top: 15px;\n        background: rgba(0, 0, 0, 0.3);\n        border-radius: 8px;\n        height: 30px;\n        position: relative;\n        overflow: hidden;\n    }\n\n    .strikerate__bar {\n        height: 100%;\n        border-radius: 8px;\n        transition: width 0.3s ease;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        font-size: 12px;\n        font-weight: bold;\n        color: #fff;\n    }\n\n    .strikerate__bar--win {\n        background: #4CAF50;\n    }\n\n    .strikerate__bar-marker {\n        position: absolute;\n        top: 0;\n        height: 100%;\n        width: 2px;\n        background: #ff9800;\n        z-index: 1;\n    }\n\n    .strikerate__bar-label {\n        position: absolute;\n        top: -18px;\n        font-size: 10px;\n        color: #ff9800;\n        transform: translateX(-50%);\n        white-space: nowrap;\n    }\n\n    .strikerate__info {\n        margin-top: 15px;\n        padding: 12px 15px;\n        background: rgba(33, 150, 243, 0.15);\n        border: 1px solid rgba(33, 150, 243, 0.3);\n        border-radius: 4px;\n        font-size: 13px;\n        text-align: center;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .strikerate__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n    }\n\n    .strikerate__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 600px) {\n        .strikerate__row {\n            flex-direction: column;\n        }\n        .strikerate__grid {\n            grid-template-columns: 1fr;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"strikerate\"\u003e\n    \u003cdiv class=\"strikerate__title\"\u003e命中率计算器\u003c/div\u003e\n\n    \u003cdiv class=\"strikerate__container\"\u003e\n        \n        \u003cdiv class=\"strikerate__section\"\u003e\n            \u003cdiv class=\"strikerate__section-title\"\u003e输入您的投注记录\u003c/div\u003e\n            \u003cdiv class=\"strikerate__row\"\u003e\n                \u003cdiv class=\"strikerate__input-group\"\u003e\n                    \u003clabel class=\"strikerate__label\"\u003e总投注数\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"strikerate__input strikerate__total\" placeholder=\"100\" min=\"1\" step=\"1\" /\u003e\n                    \u003cspan class=\"strikerate__hint\"\u003e投注的总次数\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"strikerate__input-group\"\u003e\n                    \u003clabel class=\"strikerate__label\"\u003e赢的投注数\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"strikerate__input strikerate__wins\" placeholder=\"55\" min=\"0\" step=\"1\" /\u003e\n                    \u003cspan class=\"strikerate__hint\"\u003e赢的投注次数\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"strikerate__row\"\u003e\n                \u003cdiv class=\"strikerate__input-group\"\u003e\n                    \u003clabel class=\"strikerate__label\"\u003e平均赔率（小数）\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"strikerate__input strikerate__avg-odds\" placeholder=\"1.91\" min=\"1.01\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"strikerate__hint\"\u003e投注的平均小数赔率\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"strikerate__row\"\u003e\n                \u003cdiv class=\"strikerate__input-group\"\u003e\n                    \u003clabel class=\"strikerate__label\"\u003e总投注额\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"strikerate__input strikerate__staked\" placeholder=\"10000\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"strikerate__hint\"\u003e总投注金额（可选）\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"strikerate__input-group\"\u003e\n                    \u003clabel class=\"strikerate__label\"\u003e总返还额\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"strikerate__input strikerate__returned\" placeholder=\"10500\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"strikerate__hint\"\u003e总返还金额（可选）\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"strikerate__output\"\u003e\n            \u003cdiv class=\"strikerate__output-title\"\u003e结果\u003c/div\u003e\n\n            \u003cdiv class=\"strikerate__result-box strikerate__sr-box\"\u003e\n                \u003cdiv class=\"strikerate__result-label\"\u003e命中率\u003c/div\u003e\n                \u003cdiv class=\"strikerate__result-value strikerate__sr-value\"\u003e-\u003c/div\u003e\n                \u003cdiv class=\"strikerate__result-sub strikerate__sr-sub\"\u003e-\u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"strikerate__bar-container\"\u003e\n                \u003cdiv class=\"strikerate__bar strikerate__bar--win\" style=\"width: 0%\"\u003e\u003c/div\u003e\n                \u003cdiv class=\"strikerate__bar-marker strikerate__be-marker\" style=\"display: none\"\u003e\n                    \u003cspan class=\"strikerate__bar-label\"\u003e平衡\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"strikerate__grid\" style=\"margin-top: 20px;\"\u003e\n                \u003cdiv class=\"strikerate__grid-item\"\u003e\n                    \u003cdiv class=\"strikerate__grid-label\"\u003e盈亏平衡命中率\u003c/div\u003e\n                    \u003cdiv class=\"strikerate__grid-value strikerate__be-value\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"strikerate__grid-item\"\u003e\n                    \u003cdiv class=\"strikerate__grid-label\"\u003e优势\u003c/div\u003e\n                    \u003cdiv class=\"strikerate__grid-value strikerate__edge-value\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"strikerate__grid-item\"\u003e\n                    \u003cdiv class=\"strikerate__grid-label\"\u003e亏损率\u003c/div\u003e\n                    \u003cdiv class=\"strikerate__grid-value strikerate__loss-rate\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"strikerate__grid-item\"\u003e\n                    \u003cdiv class=\"strikerate__grid-label\"\u003e每注平均盈亏\u003c/div\u003e\n                    \u003cdiv class=\"strikerate__grid-value strikerate__avg-pl\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"strikerate__grid-item\"\u003e\n                    \u003cdiv class=\"strikerate__grid-label\"\u003e净盈亏\u003c/div\u003e\n                    \u003cdiv class=\"strikerate__grid-value strikerate__pl-value\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"strikerate__grid-item\"\u003e\n                    \u003cdiv class=\"strikerate__grid-label\"\u003e投资回报率\u003c/div\u003e\n                    \u003cdiv class=\"strikerate__grid-value strikerate__roi-value\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"strikerate__info\"\u003e\n                命中率显示投注的胜率。与盈亏平衡率比较，看您是否有优势。\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cbutton class=\"strikerate__reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const totalInput = container.querySelector('.strikerate__total');\n    const winsInput = container.querySelector('.strikerate__wins');\n    const avgOddsInput = container.querySelector('.strikerate__avg-odds');\n    const stakedInput = container.querySelector('.strikerate__staked');\n    const returnedInput = container.querySelector('.strikerate__returned');\n\n    const srBox = container.querySelector('.strikerate__sr-box');\n    const srValue = container.querySelector('.strikerate__sr-value');\n    const srSub = container.querySelector('.strikerate__sr-sub');\n    const beValue = container.querySelector('.strikerate__be-value');\n    const edgeValue = container.querySelector('.strikerate__edge-value');\n    const lossRate = container.querySelector('.strikerate__loss-rate');\n    const avgPl = container.querySelector('.strikerate__avg-pl');\n    const plValue = container.querySelector('.strikerate__pl-value');\n    const roiValue = container.querySelector('.strikerate__roi-value');\n\n    const winBar = container.querySelector('.strikerate__bar--win');\n    const beMarker = container.querySelector('.strikerate__be-marker');\n\n    const resetBtn = container.querySelector('.strikerate__reset');\n\n    function calculate() {\n        var total = parseInt(totalInput.value);\n        var wins = parseInt(winsInput.value);\n        var avgOdds = parseFloat(avgOddsInput.value);\n        var staked = parseFloat(stakedInput.value);\n        var returned = parseFloat(returnedInput.value);\n\n        if (isNaN(total) || total \u003c= 0) { resetOutput(); return; }\n        if (isNaN(wins) || wins \u003c 0) { resetOutput(); return; }\n\n        if (wins \u003e total) {\n            winsInput.classList.add('invalid');\n            resetOutput(); return;\n        } else {\n            winsInput.classList.remove('invalid');\n        }\n\n        var sr = (wins / total) * 100;\n\n        srValue.textContent = sr.toFixed(1) + '%';\n        srSub.textContent = wins + ' / ' + total;\n\n        lossRate.textContent = (100 - sr).toFixed(1) + '%';\n\n        \n        winBar.style.width = sr + '%';\n        winBar.textContent = sr \u003e= 10 ? sr.toFixed(0) + '%' : '';\n\n        \n        if (!isNaN(avgOdds) \u0026\u0026 avgOdds \u003e 1) {\n            var breakEven = (1 / avgOdds) * 100;\n            beValue.textContent = breakEven.toFixed(1) + '%';\n\n            var edge = sr - breakEven;\n            edgeValue.textContent = (edge \u003e= 0 ? '+' : '') + edge.toFixed(1) + '%';\n            edgeValue.className = 'strikerate__grid-value ' + (edge \u003e= 0 ? 'positive' : 'negative');\n\n            srBox.classList.toggle('negative', edge \u003c 0);\n\n            \n            beMarker.style.display = 'block';\n            beMarker.style.left = Math.min(breakEven, 100) + '%';\n        } else {\n            beValue.textContent = '-';\n            edgeValue.textContent = '-';\n            edgeValue.className = 'strikerate__grid-value';\n            beMarker.style.display = 'none';\n            srBox.classList.remove('negative');\n        }\n\n        \n        if (!isNaN(staked) \u0026\u0026 staked \u003e 0 \u0026\u0026 !isNaN(returned)) {\n            var pl = returned - staked;\n            var roi = (pl / staked) * 100;\n            var avgPlPerBet = pl / total;\n\n            plValue.textContent = (pl \u003e= 0 ? '+$' : '-$') + Math.abs(pl).toFixed(2);\n            plValue.className = 'strikerate__grid-value ' + (pl \u003e= 0 ? 'positive' : 'negative');\n\n            roiValue.textContent = (roi \u003e= 0 ? '+' : '') + roi.toFixed(2) + '%';\n            roiValue.className = 'strikerate__grid-value ' + (roi \u003e= 0 ? 'positive' : 'negative');\n\n            avgPl.textContent = (avgPlPerBet \u003e= 0 ? '+$' : '-$') + Math.abs(avgPlPerBet).toFixed(2);\n            avgPl.className = 'strikerate__grid-value ' + (avgPlPerBet \u003e= 0 ? 'positive' : 'negative');\n        } else {\n            plValue.textContent = '-';\n            plValue.className = 'strikerate__grid-value';\n            roiValue.textContent = '-';\n            roiValue.className = 'strikerate__grid-value';\n            avgPl.textContent = '-';\n            avgPl.className = 'strikerate__grid-value';\n        }\n    }\n\n    function resetOutput() {\n        srValue.textContent = '-'; srSub.textContent = '-';\n        beValue.textContent = '-'; edgeValue.textContent = '-';\n        edgeValue.className = 'strikerate__grid-value';\n        lossRate.textContent = '-'; avgPl.textContent = '-';\n        avgPl.className = 'strikerate__grid-value';\n        plValue.textContent = '-'; plValue.className = 'strikerate__grid-value';\n        roiValue.textContent = '-'; roiValue.className = 'strikerate__grid-value';\n        winBar.style.width = '0%'; winBar.textContent = '';\n        beMarker.style.display = 'none';\n        srBox.classList.remove('negative');\n    }\n\n    function resetAll() {\n        totalInput.value = ''; winsInput.value = '';\n        avgOddsInput.value = ''; stakedInput.value = ''; returnedInput.value = '';\n        winsInput.classList.remove('invalid');\n        resetOutput();\n    }\n\n    [totalInput, winsInput, avgOddsInput, stakedInput, returnedInput].forEach(function(el) {\n        el.addEventListener('input', calculate);\n    });\n    resetBtn.addEventListener('click', resetAll);\n})();\n\u003c/script\u003e","title":"命中率计算器"},{"content":" 中间盘计算器 赔率格式 小数 分数 美式 投注1 投注1盘口/让分 让分或总分（例如：-3.5） 投注1赔率 投注1的赔率（例如：强队让分） 投注1金额 投注金额 投注2 投注2盘口/让分 对面盘口（例如：\u0026#43;6.5） 投注2赔率 投注2的赔率（例如：弱队让分） 投注2金额 投注金额 结果 最佳情况（中间盘命中） - 最差情况（保证） - 中间盘大小 - 预估中间盘概率 - 仅投注1赢时利润 - 仅投注2赢时利润 - 中间盘是用不同盘口在比赛双方下注，创造两个投注都能赢的窗口。 重置 ","permalink":"https://calculators-odds.com/zh/middle-calculator/","summary":"\u003cstyle\u003e\n    .middle {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .middle__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .middle__container {\n        width: 100%;\n        max-width: 700px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .middle__section {\n        background: #2d333b;\n        color: #e8e8e8;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .middle__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #2196F3;\n        color: #2196F3;\n    }\n\n    .middle__row {\n        display: flex;\n        gap: 15px;\n        margin-bottom: 15px;\n    }\n\n    .middle__row:last-child {\n        margin-bottom: 0;\n    }\n\n    .middle__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n        min-width: 120px;\n    }\n\n    .middle__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .middle__input, .middle__select {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .middle__input:focus, .middle__select:focus {\n        outline: none;\n        border-color: #2196F3;\n    }\n\n    .middle__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .middle__select {\n        cursor: pointer;\n    }\n\n    .middle__select option {\n        background: #2d333b;\n        color: #e8e8e8;\n    }\n\n    .middle__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .middle__output {\n        background: #2d333b;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .middle__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .middle__result-boxes {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n        margin-bottom: 20px;\n    }\n\n    .middle__result-box {\n        border-radius: 8px;\n        padding: 15px;\n        text-align: center;\n    }\n\n    .middle__result-box--middle {\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n    }\n\n    .middle__result-box--worst {\n        background: rgba(255, 152, 0, 0.15);\n        border: 2px solid #ff9800;\n    }\n\n    .middle__result-box-label {\n        font-size: 12px;\n        margin-bottom: 6px;\n        color: rgba(232, 232, 232, 0.7);\n    }\n\n    .middle__result-box-value {\n        font-size: 24px;\n        font-weight: bold;\n    }\n\n    .middle__result-box--middle .middle__result-box-value {\n        color: #4CAF50;\n    }\n\n    .middle__result-box--worst .middle__result-box-value {\n        color: #ff9800;\n    }\n\n    .middle__grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .middle__grid-item {\n        background: rgba(255, 255, 255, 0.05);\n        padding: 15px;\n        border-radius: 6px;\n        text-align: center;\n    }\n\n    .middle__grid-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .middle__grid-value {\n        font-size: 18px;\n        font-weight: bold;\n    }\n\n    .middle__grid-value.positive {\n        color: #4CAF50;\n    }\n\n    .middle__grid-value.negative {\n        color: #f44336;\n    }\n\n    .middle__info {\n        margin-top: 15px;\n        padding: 12px 15px;\n        background: rgba(33, 150, 243, 0.15);\n        border: 1px solid rgba(33, 150, 243, 0.3);\n        border-radius: 4px;\n        font-size: 13px;\n        text-align: center;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .middle__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n    }\n\n    .middle__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 600px) {\n        .middle__row {\n            flex-direction: column;\n        }\n        .middle__result-boxes {\n            grid-template-columns: 1fr;\n        }\n        .middle__grid {\n            grid-template-columns: 1fr;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"middle\"\u003e\n    \u003cdiv class=\"middle__title\"\u003e中间盘计算器\u003c/div\u003e\n\n    \u003cdiv class=\"middle__container\"\u003e\n        \n        \u003cdiv class=\"middle__section\"\u003e\n            \u003cdiv class=\"middle__section-title\"\u003e赔率格式\u003c/div\u003e\n            \u003cdiv class=\"middle__row\"\u003e\n                \u003cdiv class=\"middle__input-group\"\u003e\n                    \u003cselect class=\"middle__select middle__format\"\u003e\n                        \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n                        \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n                        \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n                    \u003c/select\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"middle__section\"\u003e\n            \u003cdiv class=\"middle__section-title\"\u003e投注1\u003c/div\u003e\n            \u003cdiv class=\"middle__row\"\u003e\n                \u003cdiv class=\"middle__input-group\"\u003e\n                    \u003clabel class=\"middle__label\"\u003e投注1盘口/让分\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"middle__input middle__line1\" placeholder=\"-3.5\" /\u003e\n                    \u003cspan class=\"middle__hint\"\u003e让分或总分（例如：-3.5）\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"middle__input-group\"\u003e\n                    \u003clabel class=\"middle__label\"\u003e投注1赔率\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"middle__input middle__odds1\" placeholder=\"1.91\" /\u003e\n                    \u003cspan class=\"middle__hint\"\u003e投注1的赔率（例如：强队让分）\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"middle__input-group\"\u003e\n                    \u003clabel class=\"middle__label\"\u003e投注1金额\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"middle__input middle__stake1\" placeholder=\"100\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"middle__hint\"\u003e投注金额\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"middle__section\"\u003e\n            \u003cdiv class=\"middle__section-title\"\u003e投注2\u003c/div\u003e\n            \u003cdiv class=\"middle__row\"\u003e\n                \u003cdiv class=\"middle__input-group\"\u003e\n                    \u003clabel class=\"middle__label\"\u003e投注2盘口/让分\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"middle__input middle__line2\" placeholder=\"+6.5\" /\u003e\n                    \u003cspan class=\"middle__hint\"\u003e对面盘口（例如：\u0026#43;6.5）\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"middle__input-group\"\u003e\n                    \u003clabel class=\"middle__label\"\u003e投注2赔率\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"middle__input middle__odds2\" placeholder=\"1.91\" /\u003e\n                    \u003cspan class=\"middle__hint\"\u003e投注2的赔率（例如：弱队让分）\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"middle__input-group\"\u003e\n                    \u003clabel class=\"middle__label\"\u003e投注2金额\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"middle__input middle__stake2\" placeholder=\"100\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"middle__hint\"\u003e投注金额\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"middle__output\"\u003e\n            \u003cdiv class=\"middle__output-title\"\u003e结果\u003c/div\u003e\n\n            \u003cdiv class=\"middle__result-boxes\"\u003e\n                \u003cdiv class=\"middle__result-box middle__result-box--middle\"\u003e\n                    \u003cdiv class=\"middle__result-box-label\"\u003e最佳情况（中间盘命中）\u003c/div\u003e\n                    \u003cdiv class=\"middle__result-box-value middle__best-case\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"middle__result-box middle__result-box--worst\"\u003e\n                    \u003cdiv class=\"middle__result-box-label\"\u003e最差情况（保证）\u003c/div\u003e\n                    \u003cdiv class=\"middle__result-box-value middle__worst-case\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"middle__grid\"\u003e\n                \u003cdiv class=\"middle__grid-item\"\u003e\n                    \u003cdiv class=\"middle__grid-label\"\u003e中间盘大小\u003c/div\u003e\n                    \u003cdiv class=\"middle__grid-value middle__middle-size\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"middle__grid-item\"\u003e\n                    \u003cdiv class=\"middle__grid-label\"\u003e预估中间盘概率\u003c/div\u003e\n                    \u003cdiv class=\"middle__grid-value middle__middle-prob\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"middle__grid-item\"\u003e\n                    \u003cdiv class=\"middle__grid-label\"\u003e仅投注1赢时利润\u003c/div\u003e\n                    \u003cdiv class=\"middle__grid-value middle__profit1\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"middle__grid-item\"\u003e\n                    \u003cdiv class=\"middle__grid-label\"\u003e仅投注2赢时利润\u003c/div\u003e\n                    \u003cdiv class=\"middle__grid-value middle__profit2\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"middle__info\"\u003e\n                中间盘是用不同盘口在比赛双方下注，创造两个投注都能赢的窗口。\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cbutton class=\"middle__reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const formatSelect = container.querySelector('.middle__format');\n    const line1Input = container.querySelector('.middle__line1');\n    const odds1Input = container.querySelector('.middle__odds1');\n    const stake1Input = container.querySelector('.middle__stake1');\n    const line2Input = container.querySelector('.middle__line2');\n    const odds2Input = container.querySelector('.middle__odds2');\n    const stake2Input = container.querySelector('.middle__stake2');\n\n    const bestCaseEl = container.querySelector('.middle__best-case');\n    const worstCaseEl = container.querySelector('.middle__worst-case');\n    const middleSizeEl = container.querySelector('.middle__middle-size');\n    const middleProbEl = container.querySelector('.middle__middle-prob');\n    const profit1El = container.querySelector('.middle__profit1');\n    const profit2El = container.querySelector('.middle__profit2');\n\n    const resetBtn = container.querySelector('.middle__reset');\n\n    function validateFractionalCoefficient(c) { return /^\\d+\\/\\d+$/.test(c); }\n    function validateDecimalCoefficient(c) { return /^\\d+(\\.\\d+)?$/.test(c) \u0026\u0026 parseFloat(c) \u003e 1; }\n    function validateAmericanCoefficient(c) { return /^[-+]?\\d+$/.test(c); }\n\n    function convertFractionToDecimal(f) {\n        var p = f.split('/');\n        if (p.length !== 2) return null;\n        var n = parseFloat(p[0]), d = parseFloat(p[1]);\n        if (isNaN(n) || isNaN(d) || d === 0) return null;\n        return (n / d) + 1;\n    }\n\n    function convertAmericanToDecimal(a) {\n        var v = parseFloat(a);\n        if (isNaN(v)) return null;\n        if (v \u003e 0) return (v / 100) + 1;\n        if (v \u003c 0) return (100 / Math.abs(v)) + 1;\n        return 2;\n    }\n\n    function getDecimal(input) {\n        var fmt = formatSelect.value;\n        var val = input.value.trim();\n        if (fmt === 'Fractional') {\n            if (!validateFractionalCoefficient(val)) return null;\n            return convertFractionToDecimal(val);\n        } else if (fmt === 'Decimal') {\n            if (!validateDecimalCoefficient(val)) return null;\n            return parseFloat(val);\n        } else if (fmt === 'American') {\n            if (!validateAmericanCoefficient(val)) return null;\n            return convertAmericanToDecimal(val);\n        }\n        return null;\n    }\n\n    function calculate() {\n        var dec1 = getDecimal(odds1Input);\n        var dec2 = getDecimal(odds2Input);\n        var stake1 = parseFloat(stake1Input.value);\n        var stake2 = parseFloat(stake2Input.value);\n        var line1 = parseFloat(line1Input.value);\n        var line2 = parseFloat(line2Input.value);\n\n        \n        if (dec1 === null || dec1 \u003c= 1) {\n            if (odds1Input.value.trim()) odds1Input.classList.add('invalid');\n            resetOutput(); return;\n        } else { odds1Input.classList.remove('invalid'); }\n\n        if (dec2 === null || dec2 \u003c= 1) {\n            if (odds2Input.value.trim()) odds2Input.classList.add('invalid');\n            resetOutput(); return;\n        } else { odds2Input.classList.remove('invalid'); }\n\n        if (isNaN(stake1) || stake1 \u003c= 0 || isNaN(stake2) || stake2 \u003c= 0) { resetOutput(); return; }\n        if (isNaN(line1) || isNaN(line2)) { resetOutput(); return; }\n\n        var totalStake = stake1 + stake2;\n\n        \n        var payout1 = stake1 * dec1;\n        var payout2 = stake2 * dec2;\n\n        \n        var profitOnlyBet1 = payout1 - totalStake;\n\n        \n        var profitOnlyBet2 = payout2 - totalStake;\n\n        \n        var profitBothWin = payout1 + payout2 - totalStake;\n\n        \n        \n        \n        var absLine1 = Math.abs(line1);\n        var absLine2 = Math.abs(line2);\n\n        \n        var middleSize;\n        if ((line1 \u003c 0 \u0026\u0026 line2 \u003e 0) || (line1 \u003e 0 \u0026\u0026 line2 \u003c 0)) {\n            \n            middleSize = absLine2 - absLine1;\n        } else {\n            \n            middleSize = Math.abs(line2 - line1);\n        }\n\n        \n        var worstCase = Math.min(profitOnlyBet1, profitOnlyBet2);\n\n        \n        var bestCase = profitBothWin;\n\n        \n        \n        var middleProb = 0;\n        if (middleSize \u003e 0) {\n            middleProb = Math.min(middleSize * 2.75, 95);\n        }\n\n        \n        bestCaseEl.textContent = '$' + bestCase.toFixed(2);\n        worstCaseEl.textContent = '$' + worstCase.toFixed(2);\n\n        middleSizeEl.textContent = middleSize \u003e 0 ? middleSize.toFixed(1) + ' 分' : '无中间盘';\n\n        if (middleSize \u003e 0) {\n            middleProbEl.textContent = '~' + middleProb.toFixed(1) + '%';\n        } else {\n            middleProbEl.textContent = '0%';\n        }\n\n        profit1El.textContent = '$' + profitOnlyBet1.toFixed(2);\n        profit1El.className = 'middle__grid-value ' + (profitOnlyBet1 \u003e= 0 ? 'positive' : 'negative');\n\n        profit2El.textContent = '$' + profitOnlyBet2.toFixed(2);\n        profit2El.className = 'middle__grid-value ' + (profitOnlyBet2 \u003e= 0 ? 'positive' : 'negative');\n    }\n\n    function resetOutput() {\n        bestCaseEl.textContent = '-';\n        worstCaseEl.textContent = '-';\n        middleSizeEl.textContent = '-';\n        middleProbEl.textContent = '-';\n        profit1El.textContent = '-';\n        profit1El.className = 'middle__grid-value';\n        profit2El.textContent = '-';\n        profit2El.className = 'middle__grid-value';\n    }\n\n    function resetAll() {\n        line1Input.value = ''; odds1Input.value = ''; stake1Input.value = '';\n        line2Input.value = ''; odds2Input.value = ''; stake2Input.value = '';\n        formatSelect.selectedIndex = 0;\n        odds1Input.classList.remove('invalid');\n        odds2Input.classList.remove('invalid');\n        updatePlaceholders();\n        resetOutput();\n    }\n\n    function updatePlaceholders() {\n        var fmt = formatSelect.value;\n        if (fmt === 'Fractional') {\n            odds1Input.placeholder = '10/11';\n            odds2Input.placeholder = '10/11';\n        } else if (fmt === 'Decimal') {\n            odds1Input.placeholder = '1.91';\n            odds2Input.placeholder = '1.91';\n        } else if (fmt === 'American') {\n            odds1Input.placeholder = '-110';\n            odds2Input.placeholder = '-110';\n        }\n    }\n\n    formatSelect.addEventListener('change', function() { updatePlaceholders(); calculate(); });\n    [line1Input, odds1Input, stake1Input, line2Input, odds2Input, stake2Input].forEach(function(el) {\n        el.addEventListener('input', calculate);\n    });\n    resetBtn.addEventListener('click', resetAll);\n\n    updatePlaceholders();\n})();\n\u003c/script\u003e","title":"中间值计算器 - 中间投注"},{"content":" 赔率格式 小数 分数 美式 选项 1 选项 2 选项 3 单位投注 投注数量 4 总投注 - 派彩 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/trixie-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"trixie_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e单位投注\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投注数量\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e4\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e总投注\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [2, 3];\n    var root = document.getElementById('trixie_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"Trixie计算器 - 4注系统回报"},{"content":" 原始盘口 原始赔率（美式） 操作 买分 卖分 点数 0.5 1 1.5 2 投注额 新盘口 - 新赔率 - 派彩 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/half-point-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"halfpoint_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e原始盘口\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-line\" type=\"text\" placeholder=\"-3\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e原始赔率（美式）\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"-110\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e操作\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-action\"\u003e\n            \u003coption value=\"buy\"\u003e买分\u003c/option\u003e\n            \u003coption value=\"sell\"\u003e卖分\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e点数\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-points\"\u003e\n            \u003coption value=\"0.5\"\u003e0.5\u003c/option\u003e\n            \u003coption value=\"1\"\u003e1\u003c/option\u003e\n            \u003coption value=\"1.5\"\u003e1.5\u003c/option\u003e\n            \u003coption value=\"2\"\u003e2\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e投注额\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e新盘口\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-newline\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e新赔率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-newodds\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('halfpoint_0');\n    var lineEl = root.querySelector('.js-line');\n    var oddsEl = root.querySelector('.js-odds');\n    var actionEl = root.querySelector('.js-action');\n    var pointsEl = root.querySelector('.js-points');\n    var stakeEl = root.querySelector('.js-stake');\n    var newLineEl = root.querySelector('.js-newline');\n    var newOddsEl = root.querySelector('.js-newodds');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var resetBtn = root.querySelector('.js-reset');\n\n    \n    var COST_PER_HALF = 10; \n\n    function update() {\n        var line = parseFloat(lineEl.value);\n        var oddsVal = parseInt(oddsEl.value);\n        var action = actionEl.value;\n        var points = parseFloat(pointsEl.value);\n        var stake = parseFloat(stakeEl.value);\n\n        if (isNaN(line) || isNaN(oddsVal) || oddsVal === 0) {\n            newLineEl.textContent='-'; newOddsEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-'; return;\n        }\n\n        var halfPoints = points / 0.5;\n        var newLine, adjustedOdds;\n\n        if (action === 'buy') {\n            \n            newLine = line + points;\n            adjustedOdds = oddsVal - (halfPoints * COST_PER_HALF);\n        } else {\n            \n            newLine = line - points;\n            adjustedOdds = oddsVal + (halfPoints * COST_PER_HALF);\n        }\n\n        var newLineStr = newLine \u003e= 0 ? '+' + newLine : '' + newLine;\n        var newOddsStr = adjustedOdds \u003e= 0 ? '+' + adjustedOdds : '' + adjustedOdds;\n        newLineEl.textContent = newLineStr;\n        newOddsEl.textContent = newOddsStr;\n\n        if (!stake || stake \u003c= 0) { payoutEl.textContent='-'; profitEl.textContent='-'; return; }\n\n        \n        var dec;\n        if (adjustedOdds \u003e 0) dec = (adjustedOdds / 100) + 1;\n        else dec = (100 / Math.abs(adjustedOdds)) + 1;\n\n        var payout = stake * dec;\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(payout - stake);\n    }\n\n    root.addEventListener('input', update);\n    actionEl.addEventListener('change', update);\n    pointsEl.addEventListener('change', update);\n    resetBtn.addEventListener('click', function() {\n        lineEl.value=''; oddsEl.value=''; stakeEl.value='';\n        actionEl.selectedIndex=0; pointsEl.selectedIndex=0;\n        newLineEl.textContent='-'; newOddsEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"半分计算器 - 盘口投注买卖分数"},{"content":" 让分点数 6 6.5 7 10 13 场次数量 2 3 4 5 6 投注额 让分赔率 - 派彩 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/teaser-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"teaser_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e让分点数\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-points\"\u003e\n            \u003coption value=\"6\"\u003e6\u003c/option\u003e\n            \u003coption value=\"6.5\"\u003e6.5\u003c/option\u003e\n            \u003coption value=\"7\"\u003e7\u003c/option\u003e\n            \u003coption value=\"10\"\u003e10\u003c/option\u003e\n            \u003coption value=\"13\"\u003e13\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e场次数量\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-legs\"\u003e\n            \u003coption value=\"2\"\u003e2\u003c/option\u003e\n            \u003coption value=\"3\"\u003e3\u003c/option\u003e\n            \u003coption value=\"4\"\u003e4\u003c/option\u003e\n            \u003coption value=\"5\"\u003e5\u003c/option\u003e\n            \u003coption value=\"6\"\u003e6\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e投注额\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e让分赔率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-odds\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('teaser_0');\n    var pointsEl = root.querySelector('.js-points');\n    var legsEl = root.querySelector('.js-legs');\n    var stakeEl = root.querySelector('.js-stake');\n    var oddsEl = root.querySelector('.js-odds');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var resetBtn = root.querySelector('.js-reset');\n\n    \n    var TEASER_ODDS = {\n        '6':    { 2: -110, 3: +160, 4: +260, 5: +400, 6: +600 },\n        '6.5':  { 2: -120, 3: +140, 4: +240, 5: +360, 6: +500 },\n        '7':    { 2: -130, 3: +120, 4: +200, 5: +320, 6: +450 },\n        '10':   { 2: -200, 3: -110, 4: +120, 5: +180, 6: +250 },\n        '13':   { 2: -350, 3: -170, 4: -110, 5: +110, 6: +150 }\n    };\n\n    function americanToDecimal(a) {\n        if (a \u003e 0) return (a / 100) + 1;\n        return (100 / Math.abs(a)) + 1;\n    }\n\n    function formatAmerican(a) {\n        return a \u003e 0 ? '+' + a : '' + a;\n    }\n\n    function update() {\n        var pts = pointsEl.value;\n        var legs = parseInt(legsEl.value);\n        var stake = parseFloat(stakeEl.value);\n        var americanOdd = TEASER_ODDS[pts][legs];\n        oddsEl.textContent = formatAmerican(americanOdd);\n        if (!stake || stake \u003c= 0) { payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var dec = americanToDecimal(americanOdd);\n        var payout = stake * dec;\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(payout - stake);\n    }\n\n    pointsEl.addEventListener('change', update);\n    legsEl.addEventListener('change', update);\n    stakeEl.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        stakeEl.value=''; pointsEl.selectedIndex=0; legsEl.selectedIndex=0;\n        oddsEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n    update();\n})();\n\u003c/script\u003e","title":"变盘计算器 - 计算变盘派彩和赔率"},{"content":" 赔率格式 小数 分数 美式 选项 1 选项 2 选项 3 选项 4 选项 5 选项 6 选项 7 单位投注 投注数量 120 总投注 - 派彩 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/super-heinz-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"superheinz_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 5\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 6\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 7\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e单位投注\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投注数量\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e120\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e总投注\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [2, 3, 4, 5, 6, 7];\n    var root = document.getElementById('superheinz_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"超级亨氏计算器 - 120注系统回报"},{"content":" 过关计算器 步骤1：选择赔率格式 小数 分数 美式 步骤2：输入您的投注额 投注金额 您要投注的金额 步骤3：添加串关腿 场次 1 赢 输 无效 场次 2 赢 输 无效 + 添加场次 输入小数赔率（如 2.50） 结果 场次数量 2 综合赔率 — 隐含概率 — 潜在派彩 — 利润 — 所有场次必须赢 重置 ","permalink":"https://calculators-odds.com/zh/parlay-calculator/","summary":"\u003cstyle\u003e\n.parlay {\n    margin: 15px 0;\n    background-color: #1e2328;\n    border-radius: 8px;\n    padding: 20px;\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n    color: #e8e8e8;\n}\n\n.parlay__title {\n    font-size: 22px;\n    font-weight: bold;\n    text-align: center;\n    margin-bottom: 25px;\n    color: #e8e8e8;\n}\n\n.parlay__section {\n    background: #2d333b;\n    border-radius: 6px;\n    padding: 15px;\n    margin-bottom: 15px;\n}\n\n.parlay__section-title {\n    font-size: 14px;\n    font-weight: 600;\n    color: #4CAF50;\n    margin-bottom: 15px;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n}\n\n.parlay__format-selector {\n    display: flex;\n    gap: 8px;\n    flex-wrap: wrap;\n}\n\n.parlay__format-btn {\n    flex: 1;\n    min-width: 100px;\n    padding: 10px 15px;\n    border: 2px solid #4CAF50;\n    background: transparent;\n    color: #e8e8e8;\n    cursor: pointer;\n    border-radius: 4px;\n    font-size: 14px;\n    font-weight: 500;\n    transition: all 0.2s;\n}\n\n.parlay__format-btn:hover {\n    background: rgba(76, 175, 80, 0.2);\n}\n\n.parlay__format-btn.active {\n    background: #4CAF50;\n    color: #fff;\n}\n\n.parlay__input-group {\n    display: flex;\n    flex-direction: column;\n    gap: 5px;\n}\n\n.parlay__label {\n    font-size: 13px;\n    color: rgba(232, 232, 232, 0.8);\n}\n\n.parlay__input {\n    width: 100%;\n    padding: 12px;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 4px;\n    font-size: 16px;\n    background: #2d333b;\n    color: #e8e8e8;\n    transition: border-color 0.2s;\n}\n\n.parlay__input:focus {\n    outline: none;\n    border-color: #4CAF50;\n}\n\n.parlay__input::placeholder {\n    color: rgba(232, 232, 232, 0.4);\n}\n\n.parlay__hint {\n    font-size: 11px;\n    color: rgba(232, 232, 232, 0.5);\n    margin-top: 8px;\n}\n\n.parlay__legs-list {\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n}\n\n.parlay__leg {\n    display: grid;\n    grid-template-columns: 60px 1fr 100px 60px auto;\n    gap: 10px;\n    align-items: center;\n    padding: 12px;\n    background: rgba(0, 0, 0, 0.2);\n    border-radius: 4px;\n}\n\n.parlay__leg-number {\n    font-weight: 600;\n    font-size: 13px;\n    color: #4CAF50;\n}\n\n.parlay__leg-input {\n    width: 100%;\n    padding: 10px 12px;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 4px;\n    font-size: 15px;\n    background: #2d333b;\n    color: #e8e8e8;\n    transition: border-color 0.2s;\n}\n\n.parlay__leg-input:focus {\n    outline: none;\n    border-color: #4CAF50;\n}\n\n.parlay__leg-input::placeholder {\n    color: rgba(232, 232, 232, 0.4);\n}\n\n.parlay__leg-input.invalid {\n    border-color: #f44336;\n}\n\n.parlay__leg-outcome {\n    padding: 10px;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 4px;\n    font-size: 14px;\n    background: #2d333b;\n    color: #e8e8e8;\n    cursor: pointer;\n}\n\n.parlay__leg-decimal {\n    font-size: 12px;\n    color: rgba(232, 232, 232, 0.6);\n    text-align: center;\n}\n\n.parlay__leg-remove {\n    padding: 6px 10px;\n    background: #f44336;\n    color: #fff;\n    border: none;\n    border-radius: 4px;\n    cursor: pointer;\n    font-size: 12px;\n    transition: background 0.2s;\n}\n\n.parlay__leg-remove:hover {\n    background: #d32f2f;\n}\n\n.parlay__add-btn {\n    width: 100%;\n    padding: 10px;\n    margin-top: 10px;\n    background: transparent;\n    border: 2px dashed rgba(255, 255, 255, 0.3);\n    color: #e8e8e8;\n    border-radius: 4px;\n    cursor: pointer;\n    font-size: 14px;\n    transition: all 0.2s;\n}\n\n.parlay__add-btn:hover {\n    border-color: #4CAF50;\n    color: #4CAF50;\n}\n\n.parlay__results-grid {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 10px;\n    margin-bottom: 15px;\n}\n\n.parlay__result-box {\n    background: rgba(0, 0, 0, 0.2);\n    padding: 12px;\n    border-radius: 4px;\n    text-align: center;\n}\n\n.parlay__result-label {\n    font-size: 10px;\n    color: rgba(232, 232, 232, 0.7);\n    text-transform: uppercase;\n    margin-bottom: 4px;\n}\n\n.parlay__result-value {\n    font-size: 18px;\n    font-weight: 700;\n    color: #e8e8e8;\n}\n\n.parlay__result-value.highlight {\n    color: #4CAF50;\n}\n\n.parlay__result-value.warning {\n    color: #ff9800;\n}\n\n.parlay__result-value.lose {\n    color: #f44336;\n}\n\n.parlay__payout-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 10px;\n}\n\n.parlay__payout-box {\n    background: rgba(76, 175, 80, 0.1);\n    border: 1px solid rgba(76, 175, 80, 0.3);\n    padding: 15px;\n    border-radius: 4px;\n    text-align: center;\n}\n\n.parlay__payout-label {\n    font-size: 11px;\n    color: rgba(232, 232, 232, 0.7);\n    text-transform: uppercase;\n    margin-bottom: 5px;\n}\n\n.parlay__payout-value {\n    font-size: 24px;\n    font-weight: 700;\n    color: #4CAF50;\n}\n\n.parlay__payout-value.lose {\n    color: #f44336;\n}\n\n.parlay__status {\n    text-align: center;\n    padding: 12px;\n    border-radius: 4px;\n    margin-top: 15px;\n    font-weight: 600;\n    font-size: 14px;\n}\n\n.parlay__status.wins {\n    background: rgba(76, 175, 80, 0.2);\n    color: #4CAF50;\n}\n\n.parlay__status.loses {\n    background: rgba(244, 67, 54, 0.2);\n    color: #f44336;\n}\n\n.parlay__status.push {\n    background: rgba(255, 152, 0, 0.2);\n    color: #ff9800;\n}\n\n.parlay__status.pending {\n    background: rgba(255, 255, 255, 0.05);\n    color: rgba(232, 232, 232, 0.6);\n}\n\n.parlay__buttons {\n    display: flex;\n    justify-content: center;\n    margin-top: 15px;\n}\n\n.parlay__btn {\n    padding: 10px 30px;\n    border: none;\n    border-radius: 4px;\n    font-size: 14px;\n    font-weight: 500;\n    cursor: pointer;\n    transition: all 0.2s;\n}\n\n.parlay__btn--secondary {\n    background: #666;\n    color: #fff;\n}\n\n.parlay__btn--secondary:hover {\n    background: #555;\n}\n\n@media (max-width: 700px) {\n    .parlay__leg {\n        grid-template-columns: 1fr;\n        gap: 8px;\n    }\n\n    .parlay__leg-decimal {\n        text-align: left;\n    }\n\n    .parlay__results-grid {\n        grid-template-columns: 1fr;\n    }\n\n    .parlay__payout-grid {\n        grid-template-columns: 1fr;\n    }\n\n    .parlay__format-btn {\n        min-width: 80px;\n    }\n}\n\u003c/style\u003e\n\n\u003cdiv class=\"parlay\"\u003e\n    \u003cdiv class=\"parlay__title\"\u003e过关计算器\u003c/div\u003e\n\n    \u003cdiv class=\"parlay__section\"\u003e\n        \u003cdiv class=\"parlay__section-title\"\u003e步骤1：选择赔率格式\u003c/div\u003e\n        \u003cdiv class=\"parlay__format-selector\"\u003e\n            \u003cbutton type=\"button\" class=\"parlay__format-btn active\" data-type=\"decimal\"\u003e小数\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"parlay__format-btn\" data-type=\"fractional\"\u003e分数\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"parlay__format-btn\" data-type=\"american\"\u003e美式\u003c/button\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"parlay__section\"\u003e\n        \u003cdiv class=\"parlay__section-title\"\u003e步骤2：输入您的投注额\u003c/div\u003e\n        \u003cdiv class=\"parlay__input-group\"\u003e\n            \u003clabel class=\"parlay__label\"\u003e投注金额\u003c/label\u003e\n            \u003cinput type=\"text\" class=\"parlay__input parlay__stake\" placeholder=\"100\"\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"parlay__hint\"\u003e您要投注的金额\u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"parlay__section\"\u003e\n        \u003cdiv class=\"parlay__section-title\"\u003e步骤3：添加串关腿\u003c/div\u003e\n        \u003cdiv class=\"parlay__legs-list\"\u003e\n            \u003cdiv class=\"parlay__leg\" data-index=\"0\"\u003e\n                \u003cspan class=\"parlay__leg-number\"\u003e场次 1\u003c/span\u003e\n                \u003cinput type=\"text\" class=\"parlay__leg-input\" placeholder=\"2.50\" data-index=\"0\"\u003e\n                \u003cselect class=\"parlay__leg-outcome\" data-index=\"0\"\u003e\n                    \u003coption value=\"win\"\u003e赢\u003c/option\u003e\n                    \u003coption value=\"lose\"\u003e输\u003c/option\u003e\n                    \u003coption value=\"push\"\u003e无效\u003c/option\u003e\n                \u003c/select\u003e\n                \u003cspan class=\"parlay__leg-decimal\" data-index=\"0\"\u003e\u003c/span\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"parlay__leg\" data-index=\"1\"\u003e\n                \u003cspan class=\"parlay__leg-number\"\u003e场次 2\u003c/span\u003e\n                \u003cinput type=\"text\" class=\"parlay__leg-input\" placeholder=\"2.50\" data-index=\"1\"\u003e\n                \u003cselect class=\"parlay__leg-outcome\" data-index=\"1\"\u003e\n                    \u003coption value=\"win\"\u003e赢\u003c/option\u003e\n                    \u003coption value=\"lose\"\u003e输\u003c/option\u003e\n                    \u003coption value=\"push\"\u003e无效\u003c/option\u003e\n                \u003c/select\u003e\n                \u003cspan class=\"parlay__leg-decimal\" data-index=\"1\"\u003e\u003c/span\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n        \u003cbutton type=\"button\" class=\"parlay__add-btn\"\u003e+ 添加场次\u003c/button\u003e\n        \u003cdiv class=\"parlay__hint parlay__hint-format\"\u003e输入小数赔率（如 2.50）\u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"parlay__section\"\u003e\n        \u003cdiv class=\"parlay__section-title\"\u003e结果\u003c/div\u003e\n        \u003cdiv class=\"parlay__results-grid\"\u003e\n            \u003cdiv class=\"parlay__result-box\"\u003e\n                \u003cdiv class=\"parlay__result-label\"\u003e场次数量\u003c/div\u003e\n                \u003cdiv class=\"parlay__result-value\" id=\"parlayLegs\"\u003e2\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"parlay__result-box\"\u003e\n                \u003cdiv class=\"parlay__result-label\"\u003e综合赔率\u003c/div\u003e\n                \u003cdiv class=\"parlay__result-value\" id=\"parlayCombinedOdds\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"parlay__result-box\"\u003e\n                \u003cdiv class=\"parlay__result-label\"\u003e隐含概率\u003c/div\u003e\n                \u003cdiv class=\"parlay__result-value\" id=\"parlayImpliedProb\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \u003cdiv class=\"parlay__payout-grid\"\u003e\n            \u003cdiv class=\"parlay__payout-box\"\u003e\n                \u003cdiv class=\"parlay__payout-label\"\u003e潜在派彩\u003c/div\u003e\n                \u003cdiv class=\"parlay__payout-value\" id=\"parlayPayout\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"parlay__payout-box\"\u003e\n                \u003cdiv class=\"parlay__payout-label\"\u003e利润\u003c/div\u003e\n                \u003cdiv class=\"parlay__payout-value\" id=\"parlayProfit\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \u003cdiv class=\"parlay__status pending\" id=\"parlayStatus\"\u003e所有场次必须赢\u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"parlay__buttons\"\u003e\n        \u003cbutton type=\"button\" class=\"parlay__btn parlay__btn--secondary\" id=\"parlayReset\"\u003e重置\u003c/button\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n    let currentOddsType = 'decimal';\n    let legCount = 2;\n    const maxLegs = 15;\n\n    const placeholders = {\n        decimal: '2.50',\n        fractional: '3\\/2',\n        american: '\\u002b150'\n    };\n\n    const hints = {\n        decimal: '输入小数赔率（如 2.50）',\n        fractional: '输入分数赔率（如 3\\/2）',\n        american: '输入美式赔率（如 \\u002b150 或 -200）'\n    };\n\n    function validateDecimal(value) {\n        return /^\\d+(\\.\\d+)?$/.test(value) \u0026\u0026 parseFloat(value) \u003e 1;\n    }\n\n    function validateFractional(value) {\n        return /^\\d+\\/\\d+$/.test(value);\n    }\n\n    function validateAmerican(value) {\n        const cleaned = value.replace(/^\\+/, '');\n        return /^-?\\d+$/.test(cleaned) \u0026\u0026 (Math.abs(parseInt(cleaned)) \u003e= 100);\n    }\n\n    function fractionalToDecimal(fraction) {\n        const parts = fraction.split('/');\n        return (parseFloat(parts[0]) / parseFloat(parts[1])) + 1;\n    }\n\n    function americanToDecimal(american) {\n        const value = parseInt(american.replace(/^\\+/, ''));\n        return value \u003e 0 ? (value / 100) + 1 : (100 / Math.abs(value)) + 1;\n    }\n\n    function decimalToAmerican(decimal) {\n        if (decimal \u003e= 2) {\n            return '+' + Math.round((decimal - 1) * 100);\n        }\n        return Math.round(-100 / (decimal - 1)).toString();\n    }\n\n    function getDecimalOdds(value) {\n        if (!value) return null;\n\n        if (currentOddsType === 'decimal') {\n            return validateDecimal(value) ? parseFloat(value) : null;\n        } else if (currentOddsType === 'fractional') {\n            return validateFractional(value) ? fractionalToDecimal(value) : null;\n        } else if (currentOddsType === 'american') {\n            return validateAmerican(value) ? americanToDecimal(value) : null;\n        }\n        return null;\n    }\n\n    function updatePlaceholders() {\n        container.querySelectorAll('.parlay__leg-input').forEach(input =\u003e {\n            input.placeholder = placeholders[currentOddsType];\n        });\n\n        const hintEl = container.querySelector('.parlay__hint-format');\n        if (hintEl) {\n            hintEl.textContent = hints[currentOddsType];\n        }\n    }\n\n    function addLeg() {\n        if (legCount \u003e= maxLegs) return;\n\n        const legsList = container.querySelector('.parlay__legs-list');\n\n        const newLeg = document.createElement('div');\n        newLeg.className = 'parlay__leg';\n        newLeg.dataset.index = legCount;\n        newLeg.innerHTML = `\n            \u003cspan class=\"parlay__leg-number\"\u003e场次 ${legCount + 1}\u003c/span\u003e\n            \u003cinput type=\"text\" class=\"parlay__leg-input\" placeholder=\"${placeholders[currentOddsType]}\" data-index=\"${legCount}\"\u003e\n            \u003cselect class=\"parlay__leg-outcome\" data-index=\"${legCount}\"\u003e\n                \u003coption value=\"win\"\u003e赢\u003c/option\u003e\n                \u003coption value=\"lose\"\u003e输\u003c/option\u003e\n                \u003coption value=\"push\"\u003e无效\u003c/option\u003e\n            \u003c/select\u003e\n            \u003cspan class=\"parlay__leg-decimal\" data-index=\"${legCount}\"\u003e\u003c/span\u003e\n            \u003cbutton type=\"button\" class=\"parlay__leg-remove\"\u003e✕\u003c/button\u003e\n        `;\n\n        legsList.appendChild(newLeg);\n        legCount++;\n\n        newLeg.querySelector('.parlay__leg-input').addEventListener('input', calculate);\n        newLeg.querySelector('.parlay__leg-outcome').addEventListener('change', calculate);\n        newLeg.querySelector('.parlay__leg-remove').addEventListener('click', function() {\n            removeLeg(newLeg);\n        });\n\n        if (legCount \u003e= maxLegs) {\n            container.querySelector('.parlay__add-btn').style.display = 'none';\n        }\n\n        calculate();\n    }\n\n    function removeLeg(legEl) {\n        if (legCount \u003c= 2) return;\n\n        legEl.remove();\n        legCount--;\n\n        const legs = container.querySelectorAll('.parlay__leg');\n        legs.forEach((leg, index) =\u003e {\n            leg.dataset.index = index;\n            leg.querySelector('.parlay__leg-number').textContent = '场次 ' + (index + 1);\n            leg.querySelector('.parlay__leg-input').dataset.index = index;\n            leg.querySelector('.parlay__leg-outcome').dataset.index = index;\n            leg.querySelector('.parlay__leg-decimal').dataset.index = index;\n        });\n\n        if (legCount \u003c maxLegs) {\n            container.querySelector('.parlay__add-btn').style.display = 'block';\n        }\n\n        calculate();\n    }\n\n    function calculate() {\n        const inputs = container.querySelectorAll('.parlay__leg-input');\n        const outcomes = container.querySelectorAll('.parlay__leg-outcome');\n        const decimalDisplays = container.querySelectorAll('.parlay__leg-decimal');\n        const stake = parseFloat(container.querySelector('.parlay__stake').value) || 0;\n\n        let combinedOdds = 1;\n        let validLegs = 0;\n        let hasLoss = false;\n        let hasPush = false;\n        let pushCount = 0;\n\n        inputs.forEach((input, index) =\u003e {\n            const value = input.value.trim();\n            const decOdds = getDecimalOdds(value);\n            const outcome = outcomes[index].value;\n\n            if (value \u0026\u0026 !decOdds) {\n                input.classList.add('invalid');\n                decimalDisplays[index].textContent = '';\n            } else if (decOdds) {\n                input.classList.remove('invalid');\n\n                if (currentOddsType !== 'decimal') {\n                    decimalDisplays[index].textContent = `(${decOdds.toFixed(2)})`;\n                } else {\n                    decimalDisplays[index].textContent = '';\n                }\n\n                if (outcome === 'win') {\n                    combinedOdds *= decOdds;\n                    validLegs++;\n                } else if (outcome === 'push') {\n                    hasPush = true;\n                    pushCount++;\n                    validLegs++;\n                } else if (outcome === 'lose') {\n                    hasLoss = true;\n                    validLegs++;\n                }\n            } else {\n                input.classList.remove('invalid');\n                decimalDisplays[index].textContent = '';\n            }\n        });\n\n        container.querySelector('#parlayLegs').textContent = legCount;\n\n        const combinedOddsEl = container.querySelector('#parlayCombinedOdds');\n        const impliedProbEl = container.querySelector('#parlayImpliedProb');\n        const payoutEl = container.querySelector('#parlayPayout');\n        const profitEl = container.querySelector('#parlayProfit');\n        const statusEl = container.querySelector('#parlayStatus');\n\n        if (validLegs \u003e= 2 \u0026\u0026 !hasLoss) {\n            let displayOdds;\n            if (currentOddsType === 'american') {\n                displayOdds = decimalToAmerican(combinedOdds);\n            } else if (currentOddsType === 'fractional') {\n                const profit = combinedOdds - 1;\n                displayOdds = `${Math.round(profit * 100)}/100`;\n            } else {\n                displayOdds = combinedOdds.toFixed(2);\n            }\n\n            combinedOddsEl.textContent = displayOdds;\n\n            const impliedProb = (1 / combinedOdds) * 100;\n            impliedProbEl.textContent = impliedProb.toFixed(1) + '%';\n\n            if (stake \u003e 0) {\n                const payout = stake * combinedOdds;\n                const profit = payout - stake;\n\n                payoutEl.textContent = '$' + payout.toFixed(2);\n                payoutEl.className = 'parlay__payout-value';\n                profitEl.textContent = '+$' + profit.toFixed(2);\n                profitEl.className = 'parlay__payout-value';\n            } else {\n                payoutEl.textContent = '—';\n                profitEl.textContent = '—';\n            }\n\n            if (hasPush \u0026\u0026 pushCount === validLegs - 1) {\n                statusEl.textContent = '简化为单注（推平）';\n                statusEl.className = 'parlay__status push';\n            } else if (hasPush) {\n                statusEl.textContent = '串关赢了（有推平）';\n                statusEl.className = 'parlay__status wins';\n            } else {\n                statusEl.textContent = '串关赢了！';\n                statusEl.className = 'parlay__status wins';\n            }\n        } else if (hasLoss) {\n            combinedOddsEl.textContent = '—';\n            impliedProbEl.textContent = '—';\n            payoutEl.textContent = '$0.00';\n            payoutEl.className = 'parlay__payout-value lose';\n            profitEl.textContent = stake \u003e 0 ? '-$' + stake.toFixed(2) : '—';\n            profitEl.className = 'parlay__payout-value lose';\n            statusEl.textContent = '串关输了';\n            statusEl.className = 'parlay__status loses';\n        } else {\n            combinedOddsEl.textContent = '—';\n            impliedProbEl.textContent = '—';\n            payoutEl.textContent = '—';\n            payoutEl.className = 'parlay__payout-value';\n            profitEl.textContent = '—';\n            profitEl.className = 'parlay__payout-value';\n            statusEl.textContent = '所有场次必须赢';\n            statusEl.className = 'parlay__status pending';\n        }\n    }\n\n    function reset() {\n        const legs = container.querySelectorAll('.parlay__leg');\n        legs.forEach((leg, index) =\u003e {\n            if (index \u003e= 2) leg.remove();\n        });\n        legCount = 2;\n\n        container.querySelectorAll('.parlay__leg-input').forEach(input =\u003e {\n            input.value = '';\n            input.classList.remove('invalid');\n        });\n\n        container.querySelectorAll('.parlay__leg-outcome').forEach(select =\u003e {\n            select.value = 'win';\n        });\n\n        container.querySelectorAll('.parlay__leg-decimal').forEach(span =\u003e {\n            span.textContent = '';\n        });\n\n        container.querySelector('.parlay__stake').value = '';\n\n        container.querySelector('#parlayLegs').textContent = '2';\n        container.querySelector('#parlayCombinedOdds').textContent = '—';\n        container.querySelector('#parlayImpliedProb').textContent = '—';\n        container.querySelector('#parlayPayout').textContent = '—';\n        container.querySelector('#parlayPayout').className = 'parlay__payout-value';\n        container.querySelector('#parlayProfit').textContent = '—';\n        container.querySelector('#parlayProfit').className = 'parlay__payout-value';\n        container.querySelector('#parlayStatus').textContent = '所有场次必须赢';\n        container.querySelector('#parlayStatus').className = 'parlay__status pending';\n\n        container.querySelector('.parlay__add-btn').style.display = 'block';\n    }\n\n    \n    container.querySelectorAll('.parlay__format-btn').forEach(btn =\u003e {\n        btn.addEventListener('click', function() {\n            container.querySelectorAll('.parlay__format-btn').forEach(b =\u003e b.classList.remove('active'));\n            this.classList.add('active');\n            currentOddsType = this.dataset.type;\n            updatePlaceholders();\n            calculate();\n        });\n    });\n\n    container.querySelectorAll('.parlay__leg-input').forEach(input =\u003e {\n        input.addEventListener('input', calculate);\n    });\n\n    container.querySelectorAll('.parlay__leg-outcome').forEach(select =\u003e {\n        select.addEventListener('change', calculate);\n    });\n\n    container.querySelector('.parlay__stake').addEventListener('input', calculate);\n    container.querySelector('.parlay__add-btn').addEventListener('click', addLeg);\n    container.querySelector('#parlayReset').addEventListener('click', reset);\n})();\n\u003c/script\u003e","title":"串关计算器 - 多腿投注派彩计算"},{"content":" 赔率格式 美式 小数 分数 总分线 大赔率 小赔率 投注额 大派彩 - 小派彩 - 大隐含概率 - 小隐含概率 - 博彩公司水钱 - 重置 ","permalink":"https://calculators-odds.com/zh/over-under-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"overunder_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e总分线\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-line\" type=\"text\" placeholder=\"2.5\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e大赔率\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-overodds\" type=\"text\" placeholder=\"-110\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e小赔率\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-underodds\" type=\"text\" placeholder=\"-110\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e投注额\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e大派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-overpayout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e小派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-underpayout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e大隐含概率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-overprob\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e小隐含概率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-underprob\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e博彩公司水钱\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-breakeven\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('overunder_0');\n    var formatEl = root.querySelector('.js-format');\n    var lineEl = root.querySelector('.js-line');\n    var overOddsEl = root.querySelector('.js-overodds');\n    var underOddsEl = root.querySelector('.js-underodds');\n    var stakeEl = root.querySelector('.js-stake');\n    var overPayoutEl = root.querySelector('.js-overpayout');\n    var underPayoutEl = root.querySelector('.js-underpayout');\n    var overProbEl = root.querySelector('.js-overprob');\n    var underProbEl = root.querySelector('.js-underprob');\n    var breakevenEl = root.querySelector('.js-breakeven');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var overDec = convertToDecimal(overOddsEl.value.trim(), format);\n        var underDec = convertToDecimal(underOddsEl.value.trim(), format);\n        var stake = parseFloat(stakeEl.value);\n\n        if (!overDec) overOddsEl.classList.toggle('invalid', !!overOddsEl.value.trim());\n        else overOddsEl.classList.remove('invalid');\n        if (!underDec) underOddsEl.classList.toggle('invalid', !!underOddsEl.value.trim());\n        else underOddsEl.classList.remove('invalid');\n\n        if (overDec) {\n            var overProb = (1 / overDec) * 100;\n            overProbEl.textContent = overProb.toFixed(1) + '%';\n            if (stake \u0026\u0026 stake \u003e 0) {\n                overPayoutEl.textContent = formatNumber(stake * overDec);\n            } else { overPayoutEl.textContent = '-'; }\n        } else { overProbEl.textContent = '-'; overPayoutEl.textContent = '-'; }\n\n        if (underDec) {\n            var underProb = (1 / underDec) * 100;\n            underProbEl.textContent = underProb.toFixed(1) + '%';\n            if (stake \u0026\u0026 stake \u003e 0) {\n                underPayoutEl.textContent = formatNumber(stake * underDec);\n            } else { underPayoutEl.textContent = '-'; }\n        } else { underProbEl.textContent = '-'; underPayoutEl.textContent = '-'; }\n\n        if (overDec \u0026\u0026 underDec) {\n            var margin = ((1/overDec + 1/underDec) - 1) * 100;\n            breakevenEl.textContent = margin.toFixed(2) + '% vig';\n        } else { breakevenEl.textContent = '-'; }\n    }\n\n    formatEl.addEventListener('change', function() {\n        var ph = getOddsPlaceholder(formatEl.value);\n        overOddsEl.placeholder = ph; underOddsEl.placeholder = ph;\n        update();\n    });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        lineEl.value=''; overOddsEl.value=''; underOddsEl.value=''; stakeEl.value='';\n        formatEl.selectedIndex=0; overOddsEl.classList.remove('invalid'); underOddsEl.classList.remove('invalid');\n        overPayoutEl.textContent='-'; underPayoutEl.textContent='-'; overProbEl.textContent='-'; underProbEl.textContent='-'; breakevenEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"大小盘计算器 - 总分投注派彩计算"},{"content":" 赔率格式 小数 分数 美式 赔率 投注额 规则4 否 是 扣除 0p5p10p15p20p25p30p35p40p45p50p55p60p65p70p75p80p85p90p 派彩 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/single-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"single_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e投注额\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e规则4\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-rule4-toggle\"\u003e\n            \u003coption value=\"no\"\u003e否\u003c/option\u003e\n            \u003coption value=\"yes\"\u003e是\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row calc-wrap__row--hidden js-rule4-row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e扣除\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-rule4-value\"\u003e\n            \u003coption value=\"0\"\u003e0p\u003c/option\u003e\u003coption value=\"5\"\u003e5p\u003c/option\u003e\u003coption value=\"10\"\u003e10p\u003c/option\u003e\u003coption value=\"15\"\u003e15p\u003c/option\u003e\u003coption value=\"20\"\u003e20p\u003c/option\u003e\u003coption value=\"25\"\u003e25p\u003c/option\u003e\u003coption value=\"30\"\u003e30p\u003c/option\u003e\u003coption value=\"35\"\u003e35p\u003c/option\u003e\u003coption value=\"40\"\u003e40p\u003c/option\u003e\u003coption value=\"45\"\u003e45p\u003c/option\u003e\u003coption value=\"50\"\u003e50p\u003c/option\u003e\u003coption value=\"55\"\u003e55p\u003c/option\u003e\u003coption value=\"60\"\u003e60p\u003c/option\u003e\u003coption value=\"65\"\u003e65p\u003c/option\u003e\u003coption value=\"70\"\u003e70p\u003c/option\u003e\u003coption value=\"75\"\u003e75p\u003c/option\u003e\u003coption value=\"80\"\u003e80p\u003c/option\u003e\u003coption value=\"85\"\u003e85p\u003c/option\u003e\u003coption value=\"90\"\u003e90p\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const root = document.getElementById('single_0');\n    const formatEl = root.querySelector('.js-format');\n    const oddsEl = root.querySelector('.js-odds');\n    const stakeEl = root.querySelector('.js-stake');\n    const rule4Toggle = root.querySelector('.js-rule4-toggle');\n    const rule4Row = root.querySelector('.js-rule4-row');\n    const rule4Value = root.querySelector('.js-rule4-value');\n    const payoutEl = root.querySelector('.js-payout');\n    const profitEl = root.querySelector('.js-profit');\n    const resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        const format = formatEl.value;\n        const decimal = convertToDecimal(oddsEl.value.trim(), format);\n        const stake = parseFloat(stakeEl.value);\n\n        if (decimal === null) { oddsEl.classList.add('invalid'); }\n        else { oddsEl.classList.remove('invalid'); }\n\n        rule4Row.classList.toggle('calc-wrap__row--hidden', rule4Toggle.value !== 'yes');\n\n        if (!decimal || !stake || stake \u003c= 0) {\n            payoutEl.textContent = '-';\n            profitEl.textContent = '-';\n            return;\n        }\n\n        let payout = decimal * stake;\n        if (rule4Toggle.value === 'yes') {\n            const r4 = parseFloat(rule4Value.value) || 0;\n            const profit = payout - stake;\n            payout = stake + profit * (1 - r4 / 100);\n        }\n\n        const profit = payout - stake;\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(profit);\n    }\n\n    formatEl.addEventListener('change', function() {\n        oddsEl.placeholder = getOddsPlaceholder(formatEl.value);\n        update();\n    });\n    [oddsEl, stakeEl].forEach(el =\u003e el.addEventListener('input', update));\n    [rule4Toggle, rule4Value].forEach(el =\u003e el.addEventListener('change', update));\n\n    resetBtn.addEventListener('click', function() {\n        oddsEl.value = ''; stakeEl.value = '';\n        formatEl.selectedIndex = 0; rule4Toggle.selectedIndex = 0; rule4Value.selectedIndex = 0;\n        oddsEl.classList.remove('invalid');\n        rule4Row.classList.add('calc-wrap__row--hidden');\n        payoutEl.textContent = '-'; profitEl.textContent = '-';\n    });\n})();\n\u003c/script\u003e","title":"单式投注计算器 - 即时计算投注回报"},{"content":" 对冲投注计算器 步骤1：您的原始投注 赔率格式 小数 分数 美式 选择赔率格式 原始赔率 输入小数赔率（如 2.50、1.80、3.00） 原始投注 原始投注金额 步骤2：对冲投注详情 赔率格式 小数 分数 美式 选择对冲赔率格式 对冲赔率 输入小数赔率（如 2.50、1.80、3.00） 对冲模式 等额利润 无亏损（保本） 均等利润：无论结果如何，利润相同 结果 对冲投注额 - 对冲投注金额 原注赢时利润 - 对冲赢时利润 - 明细 总投资: - 原始回报: - 对冲回报: - 保证利润: - 重置 ","permalink":"https://calculators-odds.com/zh/hedge-bet-calculator/","summary":"\u003cstyle\u003e\n    .hedge {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .hedge__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .hedge__container {\n        width: 100%;\n        max-width: 700px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .hedge__section {\n        background: #2d333b;\n        color: #e8e8e8;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .hedge__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #2196F3;\n        color: #2196F3;\n    }\n\n    .hedge__row {\n        display: flex;\n        gap: 15px;\n        margin-bottom: 15px;\n    }\n\n    .hedge__row:last-child {\n        margin-bottom: 0;\n    }\n\n    .hedge__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n    }\n\n    .hedge__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .hedge__input, .hedge__select {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .hedge__input:focus, .hedge__select:focus {\n        outline: none;\n        border-color: #2196F3;\n    }\n\n    .hedge__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .hedge__select {\n        cursor: pointer;\n    }\n\n    .hedge__select option {\n        background: #2d333b;\n        color: #e8e8e8;\n    }\n\n    .hedge__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .hedge__mode-row {\n        display: flex;\n        gap: 10px;\n    }\n\n    .hedge__mode-btn {\n        flex: 1;\n        padding: 12px;\n        border: 2px solid #2196F3;\n        background: transparent;\n        color: #e8e8e8;\n        border-radius: 4px;\n        cursor: pointer;\n        font-size: 14px;\n        transition: all 0.2s;\n    }\n\n    .hedge__mode-btn:hover {\n        background: rgba(33, 150, 243, 0.2);\n    }\n\n    .hedge__mode-btn.active {\n        background: #2196F3;\n        color: #fff;\n    }\n\n    .hedge__mode-hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 8px;\n        text-align: center;\n    }\n\n    .hedge__output {\n        background: #2d333b;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .hedge__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .hedge__result-box {\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n        border-radius: 8px;\n        padding: 20px;\n        text-align: center;\n        margin-bottom: 20px;\n    }\n\n    .hedge__result-label {\n        font-size: 14px;\n        margin-bottom: 8px;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .hedge__result-value {\n        font-size: 32px;\n        font-weight: bold;\n        color: #4CAF50;\n    }\n\n    .hedge__result-hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 8px;\n    }\n\n    .hedge__outcomes {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .hedge__outcome {\n        background: rgba(255, 255, 255, 0.05);\n        padding: 15px;\n        border-radius: 6px;\n        text-align: center;\n    }\n\n    .hedge__outcome-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .hedge__outcome-value {\n        font-size: 22px;\n        font-weight: bold;\n    }\n\n    .hedge__outcome-value.positive {\n        color: #4CAF50;\n    }\n\n    .hedge__outcome-value.negative {\n        color: #f44336;\n    }\n\n    .hedge__outcome-value.neutral {\n        color: #ff9800;\n    }\n\n    .hedge__summary {\n        margin-top: 20px;\n        padding-top: 15px;\n        border-top: 1px solid rgba(255,255,255,0.1);\n    }\n\n    .hedge__summary-title {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 10px;\n        color: rgba(232, 232, 232, 0.7);\n    }\n\n    .hedge__summary-grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 10px;\n    }\n\n    .hedge__summary-item {\n        display: flex;\n        justify-content: space-between;\n        font-size: 13px;\n        padding: 8px;\n        background: rgba(0, 0, 0, 0.2);\n        border-radius: 4px;\n    }\n\n    .hedge__summary-item span:first-child {\n        color: rgba(232, 232, 232, 0.6);\n    }\n\n    .hedge__summary-item span:last-child {\n        font-weight: bold;\n    }\n\n    .hedge__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n    }\n\n    .hedge__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 600px) {\n        .hedge__row {\n            flex-direction: column;\n        }\n        .hedge__outcomes {\n            grid-template-columns: 1fr;\n        }\n        .hedge__mode-row {\n            flex-direction: column;\n        }\n        .hedge__summary-grid {\n            grid-template-columns: 1fr;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"hedge\"\u003e\n    \u003cdiv class=\"hedge__title\"\u003e对冲投注计算器\u003c/div\u003e\n\n    \u003cdiv class=\"hedge__container\"\u003e\n        \n        \u003cdiv class=\"hedge__section\"\u003e\n            \u003cdiv class=\"hedge__section-title\"\u003e步骤1：您的原始投注\u003c/div\u003e\n            \u003cdiv class=\"hedge__row\"\u003e\n                \u003cdiv class=\"hedge__input-group\"\u003e\n                    \u003clabel class=\"hedge__label\"\u003e赔率格式\u003c/label\u003e\n                    \u003cselect class=\"hedge__select hedge__original-type\"\u003e\n                        \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n                        \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n                        \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"hedge__hint\"\u003e选择赔率格式\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hedge__input-group\"\u003e\n                    \u003clabel class=\"hedge__label\"\u003e原始赔率\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"hedge__input hedge__original-odds\" placeholder=\"2.50\" /\u003e\n                    \u003cspan class=\"hedge__hint hedge__original-odds-hint\" data-decimal=\"输入小数赔率（如 2.50、1.80、3.00）\" data-fractional=\"输入分数赔率（如 3/1、5/2、11/4）\" data-american=\"输入美式赔率（如 \u0026#43;150、-110、\u0026#43;200）\"\u003e输入小数赔率（如 2.50、1.80、3.00）\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"hedge__row\"\u003e\n                \u003cdiv class=\"hedge__input-group\"\u003e\n                    \u003clabel class=\"hedge__label\"\u003e原始投注\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"hedge__input hedge__original-stake\" placeholder=\"100\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"hedge__hint\"\u003e原始投注金额\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"hedge__section\"\u003e\n            \u003cdiv class=\"hedge__section-title\"\u003e步骤2：对冲投注详情\u003c/div\u003e\n            \u003cdiv class=\"hedge__row\"\u003e\n                \u003cdiv class=\"hedge__input-group\"\u003e\n                    \u003clabel class=\"hedge__label\"\u003e赔率格式\u003c/label\u003e\n                    \u003cselect class=\"hedge__select hedge__hedge-type\"\u003e\n                        \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n                        \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n                        \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"hedge__hint\"\u003e选择对冲赔率格式\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hedge__input-group\"\u003e\n                    \u003clabel class=\"hedge__label\"\u003e对冲赔率\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"hedge__input hedge__hedge-odds\" placeholder=\"1.80\" /\u003e\n                    \u003cspan class=\"hedge__hint hedge__hedge-odds-hint\" data-decimal=\"输入小数赔率（如 2.50、1.80、3.00）\" data-fractional=\"输入分数赔率（如 3/1、5/2、11/4）\" data-american=\"输入美式赔率（如 \u0026#43;150、-110、\u0026#43;200）\"\u003e输入小数赔率（如 2.50、1.80、3.00）\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"hedge__row\"\u003e\n                \u003cdiv class=\"hedge__input-group\"\u003e\n                    \u003clabel class=\"hedge__label\"\u003e对冲模式\u003c/label\u003e\n                    \u003cdiv class=\"hedge__mode-row\"\u003e\n                        \u003cbutton type=\"button\" class=\"hedge__mode-btn active\" data-mode=\"equal\"\u003e等额利润\u003c/button\u003e\n                        \u003cbutton type=\"button\" class=\"hedge__mode-btn\" data-mode=\"noLoss\"\u003e无亏损（保本）\u003c/button\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"hedge__mode-hint hedge__mode-description\" data-equal=\"均等利润：无论结果如何，利润相同\" data-noloss=\"无亏损：对冲赢则保本，原始赢则盈利\"\u003e均等利润：无论结果如何，利润相同\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"hedge__output\"\u003e\n            \u003cdiv class=\"hedge__output-title\"\u003e结果\u003c/div\u003e\n\n            \u003cdiv class=\"hedge__result-box\"\u003e\n                \u003cdiv class=\"hedge__result-label\"\u003e对冲投注额\u003c/div\u003e\n                \u003cdiv class=\"hedge__result-value hedge__hedge-stake-result\"\u003e-\u003c/div\u003e\n                \u003cdiv class=\"hedge__result-hint\"\u003e对冲投注金额\u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"hedge__outcomes\"\u003e\n                \u003cdiv class=\"hedge__outcome\"\u003e\n                    \u003cdiv class=\"hedge__outcome-label\"\u003e原注赢时利润\u003c/div\u003e\n                    \u003cdiv class=\"hedge__outcome-value hedge__profit-original\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"hedge__outcome\"\u003e\n                    \u003cdiv class=\"hedge__outcome-label\"\u003e对冲赢时利润\u003c/div\u003e\n                    \u003cdiv class=\"hedge__outcome-value hedge__profit-hedge\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"hedge__summary\"\u003e\n                \u003cdiv class=\"hedge__summary-title\"\u003e明细\u003c/div\u003e\n                \u003cdiv class=\"hedge__summary-grid\"\u003e\n                    \u003cdiv class=\"hedge__summary-item\"\u003e\n                        \u003cspan\u003e总投资:\u003c/span\u003e\n                        \u003cspan class=\"hedge__total-invested\"\u003e-\u003c/span\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"hedge__summary-item\"\u003e\n                        \u003cspan\u003e原始回报:\u003c/span\u003e\n                        \u003cspan class=\"hedge__original-return\"\u003e-\u003c/span\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"hedge__summary-item\"\u003e\n                        \u003cspan\u003e对冲回报:\u003c/span\u003e\n                        \u003cspan class=\"hedge__hedge-return\"\u003e-\u003c/span\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"hedge__summary-item\"\u003e\n                        \u003cspan\u003e保证利润:\u003c/span\u003e\n                        \u003cspan class=\"hedge__guaranteed-profit\"\u003e-\u003c/span\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cbutton class=\"hedge__reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const originalTypeSelect = container.querySelector('.hedge__original-type');\n    const originalOddsInput = container.querySelector('.hedge__original-odds');\n    const originalStakeInput = container.querySelector('.hedge__original-stake');\n    const originalOddsHint = container.querySelector('.hedge__original-odds-hint');\n\n    const hedgeTypeSelect = container.querySelector('.hedge__hedge-type');\n    const hedgeOddsInput = container.querySelector('.hedge__hedge-odds');\n    const hedgeOddsHint = container.querySelector('.hedge__hedge-odds-hint');\n\n    const modeBtns = container.querySelectorAll('.hedge__mode-btn');\n    const modeDescription = container.querySelector('.hedge__mode-description');\n    const resetBtn = container.querySelector('.hedge__reset');\n\n    const hedgeStakeResult = container.querySelector('.hedge__hedge-stake-result');\n    const profitOriginal = container.querySelector('.hedge__profit-original');\n    const profitHedge = container.querySelector('.hedge__profit-hedge');\n    const totalInvested = container.querySelector('.hedge__total-invested');\n    const originalReturn = container.querySelector('.hedge__original-return');\n    const hedgeReturn = container.querySelector('.hedge__hedge-return');\n    const guaranteedProfit = container.querySelector('.hedge__guaranteed-profit');\n\n    let selectedMode = 'equal';\n\n    const modeDescriptions = {\n        'equal': modeDescription.dataset.equal,\n        'noLoss': modeDescription.dataset.noloss\n    };\n\n    \n    function validateFractionalCoefficient(coefficient) {\n        return /^\\d+\\/\\d+$/.test(coefficient);\n    }\n\n    function validateDecimalCoefficient(coefficient) {\n        return /^\\d+(\\.\\d+)?$/.test(coefficient) \u0026\u0026 parseFloat(coefficient) \u003e 1;\n    }\n\n    function validateAmericanCoefficient(coefficient) {\n        return /^[-+]?\\d+$/.test(coefficient);\n    }\n\n    \n    function convertFractionToDecimal(fraction) {\n        const parts = fraction.split('/');\n        if (parts.length !== 2) return null;\n        const numerator = parseFloat(parts[0]);\n        const denominator = parseFloat(parts[1]);\n        if (isNaN(numerator) || isNaN(denominator) || denominator === 0) return null;\n        return (numerator / denominator) + 1;\n    }\n\n    function convertAmericanToDecimal(americanOdds) {\n        const oddsValue = parseFloat(americanOdds);\n        if (isNaN(oddsValue)) return null;\n        if (oddsValue \u003e 0) {\n            return (oddsValue / 100) + 1;\n        } else if (oddsValue \u003c 0) {\n            return (100 / Math.abs(oddsValue)) + 1;\n        }\n        return 2;\n    }\n\n    function getDecimalOdds(typeSelect, oddsInput) {\n        const type = typeSelect.value;\n        const odds = oddsInput.value.trim();\n\n        if (type === 'Fractional') {\n            if (!validateFractionalCoefficient(odds)) return null;\n            return convertFractionToDecimal(odds);\n        } else if (type === 'Decimal') {\n            if (!validateDecimalCoefficient(odds)) return null;\n            return parseFloat(odds);\n        } else if (type === 'American') {\n            if (!validateAmericanCoefficient(odds)) return null;\n            return convertAmericanToDecimal(odds);\n        }\n        return null;\n    }\n\n    function calculate() {\n        const origDecimalOdds = getDecimalOdds(originalTypeSelect, originalOddsInput);\n        const hedgeDecimalOdds = getDecimalOdds(hedgeTypeSelect, hedgeOddsInput);\n        const origStake = parseFloat(originalStakeInput.value);\n\n        \n        if (origDecimalOdds === null || origDecimalOdds \u003c= 1) {\n            originalOddsInput.classList.add('invalid');\n            resetOutput();\n            return;\n        } else {\n            originalOddsInput.classList.remove('invalid');\n        }\n\n        \n        if (hedgeDecimalOdds === null || hedgeDecimalOdds \u003c= 1) {\n            hedgeOddsInput.classList.add('invalid');\n            resetOutput();\n            return;\n        } else {\n            hedgeOddsInput.classList.remove('invalid');\n        }\n\n        \n        if (isNaN(origStake) || origStake \u003c= 0) {\n            resetOutput();\n            return;\n        }\n\n        \n        const origPotentialReturn = origStake * origDecimalOdds;\n\n        let hedgeStake;\n\n        if (selectedMode === 'equal') {\n            \n            hedgeStake = origPotentialReturn / hedgeDecimalOdds;\n        } else {\n            \n            hedgeStake = origStake / (hedgeDecimalOdds - 1);\n        }\n\n        const hedgePotentialReturn = hedgeStake * hedgeDecimalOdds;\n        const totalStake = origStake + hedgeStake;\n\n        \n        const profitIfOriginalWins = origPotentialReturn - totalStake;\n        const profitIfHedgeWins = hedgePotentialReturn - totalStake;\n\n        \n        hedgeStakeResult.textContent = '$' + hedgeStake.toFixed(2);\n\n        profitOriginal.textContent = '$' + profitIfOriginalWins.toFixed(2);\n        profitOriginal.className = 'hedge__outcome-value ' + (profitIfOriginalWins \u003e= 0 ? 'positive' : 'negative');\n\n        profitHedge.textContent = '$' + profitIfHedgeWins.toFixed(2);\n        profitHedge.className = 'hedge__outcome-value ' + (profitIfHedgeWins \u003e= 0 ? 'positive' : (profitIfHedgeWins \u003e -0.01 ? 'neutral' : 'negative'));\n\n        totalInvested.textContent = '$' + totalStake.toFixed(2);\n        originalReturn.textContent = '$' + origPotentialReturn.toFixed(2);\n        hedgeReturn.textContent = '$' + hedgePotentialReturn.toFixed(2);\n\n        const minProfit = Math.min(profitIfOriginalWins, profitIfHedgeWins);\n        guaranteedProfit.textContent = '$' + minProfit.toFixed(2);\n    }\n\n    function resetOutput() {\n        hedgeStakeResult.textContent = '-';\n        profitOriginal.textContent = '-';\n        profitOriginal.className = 'hedge__outcome-value';\n        profitHedge.textContent = '-';\n        profitHedge.className = 'hedge__outcome-value';\n        totalInvested.textContent = '-';\n        originalReturn.textContent = '-';\n        hedgeReturn.textContent = '-';\n        guaranteedProfit.textContent = '-';\n    }\n\n    function resetAll() {\n        originalOddsInput.value = '';\n        originalStakeInput.value = '';\n        hedgeOddsInput.value = '';\n        originalOddsInput.classList.remove('invalid');\n        hedgeOddsInput.classList.remove('invalid');\n\n        modeBtns.forEach(btn =\u003e btn.classList.remove('active'));\n        modeBtns[0].classList.add('active');\n        selectedMode = 'equal';\n        modeDescription.textContent = modeDescriptions['equal'];\n\n        updatePlaceholder(originalTypeSelect, originalOddsInput, originalOddsHint);\n        updatePlaceholder(hedgeTypeSelect, hedgeOddsInput, hedgeOddsHint);\n\n        resetOutput();\n    }\n\n    \n    function updatePlaceholder(typeSelect, oddsInput, hintEl) {\n        const type = typeSelect.value;\n        if (type === 'Fractional') {\n            oddsInput.placeholder = '3/1';\n            hintEl.textContent = hintEl.dataset.fractional;\n        } else if (type === 'Decimal') {\n            oddsInput.placeholder = '2.50';\n            hintEl.textContent = hintEl.dataset.decimal;\n        } else if (type === 'American') {\n            oddsInput.placeholder = '+150';\n            hintEl.textContent = hintEl.dataset.american;\n        }\n    }\n\n    \n    originalTypeSelect.addEventListener('change', function() {\n        updatePlaceholder(originalTypeSelect, originalOddsInput, originalOddsHint);\n        calculate();\n    });\n\n    hedgeTypeSelect.addEventListener('change', function() {\n        updatePlaceholder(hedgeTypeSelect, hedgeOddsInput, hedgeOddsHint);\n        calculate();\n    });\n\n    originalOddsInput.addEventListener('input', calculate);\n    originalStakeInput.addEventListener('input', calculate);\n    hedgeOddsInput.addEventListener('input', calculate);\n\n    modeBtns.forEach(btn =\u003e {\n        btn.addEventListener('click', function() {\n            modeBtns.forEach(b =\u003e b.classList.remove('active'));\n            this.classList.add('active');\n            selectedMode = this.dataset.mode;\n            modeDescription.textContent = modeDescriptions[selectedMode];\n            calculate();\n        });\n    });\n\n    resetBtn.addEventListener('click', resetAll);\n\n    \n    updatePlaceholder(originalTypeSelect, originalOddsInput, originalOddsHint);\n    updatePlaceholder(hedgeTypeSelect, hedgeOddsInput, hedgeOddsHint);\n})();\n\u003c/script\u003e","title":"对冲投注计算器 - 锁定利润最小化损失"},{"content":" 赔率格式 小数 分数 美式 选项 1 选项 2 投注额 总投注 - 双赢 - 仅选项1赢 - 仅选项2赢 - 双输 - 重置 ","permalink":"https://calculators-odds.com/zh/reverse-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"reverse_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e选项 1\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds1\" type=\"text\" placeholder=\"2.50\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e选项 2\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds2\" type=\"text\" placeholder=\"3.00\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e投注额\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e总投注\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e双赢\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-bothwin\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e仅选项1赢\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-sel1wins\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e仅选项2赢\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-sel2wins\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e双输\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-bothlose\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('reverse_0');\n    var formatEl = root.querySelector('.js-format');\n    var odds1El = root.querySelector('.js-odds1');\n    var odds2El = root.querySelector('.js-odds2');\n    var stakeEl = root.querySelector('.js-stake');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var bothWinEl = root.querySelector('.js-bothwin');\n    var sel1WinsEl = root.querySelector('.js-sel1wins');\n    var sel2WinsEl = root.querySelector('.js-sel2wins');\n    var bothLoseEl = root.querySelector('.js-bothlose');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var d1 = convertToDecimal(odds1El.value.trim(), format);\n        var d2 = convertToDecimal(odds2El.value.trim(), format);\n        var stake = parseFloat(stakeEl.value);\n\n        if (!d1) odds1El.classList.toggle('invalid', !!odds1El.value.trim());\n        else odds1El.classList.remove('invalid');\n        if (!d2) odds2El.classList.toggle('invalid', !!odds2El.value.trim());\n        else odds2El.classList.remove('invalid');\n\n        if (!d1 || !d2 || !stake || stake \u003c= 0) {\n            totalStakeEl.textContent='-'; bothWinEl.textContent='-'; sel1WinsEl.textContent='-'; sel2WinsEl.textContent='-'; bothLoseEl.textContent='-'; return;\n        }\n\n        \n        \n        \n        var totalStake = stake * 2;\n        totalStakeEl.textContent = formatNumber(totalStake);\n\n        \n        var payout1 = stake * d1; \n        var ifBet1 = payout1 * d2; \n        var payout2 = stake * d2;\n        var ifBet2 = payout2 * d1;\n        \n        var bothWinProfit = (stake * d1 * d2) + (stake * d2 * d1) - totalStake;\n        \n        \n        var win1Only = (stake * d1 - stake) + (0 - stake); \n        var win2Only = (0 - stake) + (stake * d2 - stake); \n        var bothWin = (stake * d1 - stake) + (stake * d2 - stake); \n        var bothLose = -totalStake;\n\n        bothWinEl.textContent = formatNumber(bothWin);\n        sel1WinsEl.textContent = formatNumber(win1Only);\n        sel2WinsEl.textContent = formatNumber(win2Only);\n        bothLoseEl.textContent = formatNumber(bothLose);\n    }\n\n    formatEl.addEventListener('change', function() {\n        odds1El.placeholder = getOddsPlaceholder(formatEl.value);\n        odds2El.placeholder = getOddsPlaceholder(formatEl.value);\n        update();\n    });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        odds1El.value=''; odds2El.value=''; stakeEl.value='';\n        formatEl.selectedIndex=0; odds1El.classList.remove('invalid'); odds2El.classList.remove('invalid');\n        totalStakeEl.textContent='-'; bothWinEl.textContent='-'; sel1WinsEl.textContent='-'; sel2WinsEl.textContent='-'; bothLoseEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"反向投注计算器 - 计算反向投注回报"},{"content":" 赔率格式 小数 分数 美式 选项 1 选项 2 选项 3 选项 4 选项 5 选项 6 选项 7 选项 8 单位投注 投注数量 247 总投注 - 派彩 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/goliath-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"goliath_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 5\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 6\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 7\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 8\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e单位投注\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"1\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投注数量\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e247\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e总投注\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [2, 3, 4, 5, 6, 7, 8];\n    var root = document.getElementById('goliath_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"歌利亚投注计算器 - 247注系统回报"},{"content":" 荷兰式投注计算器 步骤1：投注设置 赔率格式 小数 分数 美式 您将输入的赔率格式 总投注 分配到各选项的总金额 步骤2：输入您的选项 # 赔率 投注金额 回报 概率 + 添加选项 结果 潜在回报 - 利润 - 隐含概率 - 荷兰投注分配您的投注额，确保无论哪个选项获胜都能获得相同的利润。请输入至少2个选项进行计算。 重置 ","permalink":"https://calculators-odds.com/zh/dutching-calculator/","summary":"\u003cstyle\u003e\n    .dutch {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .dutch__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .dutch__container {\n        width: 100%;\n        max-width: 800px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .dutch__section {\n        background: #2d333b;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .dutch__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .dutch__settings {\n        display: flex;\n        gap: 20px;\n        flex-wrap: wrap;\n    }\n\n    .dutch__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n        min-width: 150px;\n    }\n\n    .dutch__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .dutch__input, .dutch__select {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .dutch__input:focus, .dutch__select:focus {\n        outline: none;\n        border-color: #4CAF50;\n    }\n\n    .dutch__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .dutch__select {\n        cursor: pointer;\n    }\n\n    .dutch__select option {\n        background: #2d333b;\n        color: #e8e8e8;\n    }\n\n    .dutch__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .dutch__selections-header {\n        display: grid;\n        grid-template-columns: 40px 1fr 100px 100px 80px 70px;\n        gap: 10px;\n        padding: 10px 0;\n        border-bottom: 1px solid rgba(255,255,255,0.2);\n        font-weight: bold;\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n    }\n\n    .dutch__selection-row {\n        display: grid;\n        grid-template-columns: 40px 1fr 100px 100px 80px 70px;\n        gap: 10px;\n        padding: 12px 0;\n        border-bottom: 1px solid rgba(255,255,255,0.05);\n        align-items: center;\n    }\n\n    .dutch__selection-num {\n        font-weight: bold;\n        color: #4CAF50;\n        font-size: 14px;\n    }\n\n    .dutch__selection-input {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 10px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 14px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .dutch__selection-input:focus {\n        outline: none;\n        border-color: #4CAF50;\n    }\n\n    .dutch__selection-input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .dutch__selection-stake,\n    .dutch__selection-return,\n    .dutch__selection-prob {\n        font-weight: bold;\n        text-align: right;\n        font-size: 14px;\n    }\n\n    .dutch__selection-return {\n        color: #4CAF50;\n    }\n\n    .dutch__selection-prob {\n        color: rgba(232, 232, 232, 0.7);\n    }\n\n    .dutch__remove-btn {\n        background: rgba(244, 67, 54, 0.2);\n        color: #f44336;\n        border: 1px solid #f44336;\n        border-radius: 4px;\n        padding: 6px 10px;\n        cursor: pointer;\n        font-size: 11px;\n        transition: all 0.2s;\n    }\n\n    .dutch__remove-btn:hover {\n        background: #f44336;\n        color: white;\n    }\n\n    .dutch__add-btn {\n        margin-top: 15px;\n        padding: 12px 20px;\n        background: rgba(76, 175, 80, 0.2);\n        color: #4CAF50;\n        border: 1px solid #4CAF50;\n        border-radius: 4px;\n        cursor: pointer;\n        font-size: 14px;\n        transition: all 0.2s;\n    }\n\n    .dutch__add-btn:hover {\n        background: #4CAF50;\n        color: white;\n    }\n\n    .dutch__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .dutch__output-grid {\n        display: grid;\n        grid-template-columns: repeat(3, 1fr);\n        gap: 15px;\n    }\n\n    .dutch__output-item {\n        text-align: center;\n        padding: 15px;\n        background: rgba(255, 255, 255, 0.05);\n        border-radius: 6px;\n    }\n\n    .dutch__output-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .dutch__output-value {\n        font-size: 24px;\n        font-weight: bold;\n    }\n\n    .dutch__output-value.positive {\n        color: #4CAF50;\n    }\n\n    .dutch__output-value.negative {\n        color: #f44336;\n    }\n\n    .dutch__output-value.warning {\n        color: #ff9800;\n    }\n\n    .dutch__info {\n        margin-top: 15px;\n        padding: 12px 15px;\n        background: rgba(33, 150, 243, 0.15);\n        border: 1px solid rgba(33, 150, 243, 0.3);\n        border-radius: 4px;\n        font-size: 13px;\n        text-align: center;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .dutch__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n        align-self: center;\n    }\n\n    .dutch__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 768px) {\n        .dutch__selections-header {\n            display: none;\n        }\n        .dutch__selection-row {\n            grid-template-columns: 30px 1fr 70px;\n            gap: 8px;\n            padding: 15px 0;\n        }\n        .dutch__selection-row .dutch__selection-stake,\n        .dutch__selection-row .dutch__selection-return,\n        .dutch__selection-row .dutch__selection-prob {\n            display: none;\n        }\n        .dutch__mobile-results {\n            grid-column: 2 / 3;\n            display: flex;\n            gap: 10px;\n            font-size: 12px;\n            margin-top: 5px;\n        }\n        .dutch__output-grid {\n            grid-template-columns: 1fr;\n        }\n        .dutch__settings {\n            flex-direction: column;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"dutch\"\u003e\n    \u003cdiv class=\"dutch__title\"\u003e荷兰式投注计算器\u003c/div\u003e\n\n    \u003cdiv class=\"dutch__container\"\u003e\n        \n        \u003cdiv class=\"dutch__section\"\u003e\n            \u003cdiv class=\"dutch__section-title\"\u003e步骤1：投注设置\u003c/div\u003e\n            \u003cdiv class=\"dutch__settings\"\u003e\n                \u003cdiv class=\"dutch__input-group\"\u003e\n                    \u003clabel class=\"dutch__label\"\u003e赔率格式\u003c/label\u003e\n                    \u003cselect class=\"dutch__select dutch__odds-type\"\u003e\n                        \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n                        \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n                        \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"dutch__hint\"\u003e您将输入的赔率格式\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"dutch__input-group\"\u003e\n                    \u003clabel class=\"dutch__label\"\u003e总投注\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"dutch__input dutch__total-stake\" placeholder=\"100\" min=\"0\" step=\"0.01\" value=\"100\" /\u003e\n                    \u003cspan class=\"dutch__hint\"\u003e分配到各选项的总金额\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"dutch__section\"\u003e\n            \u003cdiv class=\"dutch__section-title\"\u003e步骤2：输入您的选项\u003c/div\u003e\n            \u003cdiv class=\"dutch__selections-header\"\u003e\n                \u003cdiv\u003e#\u003c/div\u003e\n                \u003cdiv\u003e赔率\u003c/div\u003e\n                \u003cdiv\u003e投注金额\u003c/div\u003e\n                \u003cdiv\u003e回报\u003c/div\u003e\n                \u003cdiv\u003e概率\u003c/div\u003e\n                \u003cdiv\u003e\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"dutch__selections-list\"\u003e\n                \n            \u003c/div\u003e\n            \u003cbutton type=\"button\" class=\"dutch__add-btn\"\u003e+ 添加选项\u003c/button\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"dutch__section\"\u003e\n            \u003cdiv class=\"dutch__output-title\"\u003e结果\u003c/div\u003e\n            \u003cdiv class=\"dutch__output-grid\"\u003e\n                \u003cdiv class=\"dutch__output-item\"\u003e\n                    \u003cdiv class=\"dutch__output-label\"\u003e潜在回报\u003c/div\u003e\n                    \u003cdiv class=\"dutch__output-value dutch__return-value\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"dutch__output-item\"\u003e\n                    \u003cdiv class=\"dutch__output-label\"\u003e利润\u003c/div\u003e\n                    \u003cdiv class=\"dutch__output-value dutch__profit-value\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"dutch__output-item\"\u003e\n                    \u003cdiv class=\"dutch__output-label\"\u003e隐含概率\u003c/div\u003e\n                    \u003cdiv class=\"dutch__output-value dutch__probability-value\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"dutch__info\"\u003e\n                荷兰投注分配您的投注额，确保无论哪个选项获胜都能获得相同的利润。请输入至少2个选项进行计算。\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \u003cbutton class=\"dutch__reset\" type=\"button\"\u003e重置\u003c/button\u003e\n    \u003c/div\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const oddsTypeSelect = container.querySelector('.dutch__odds-type');\n    const totalStakeInput = container.querySelector('.dutch__total-stake');\n    const selectionsList = container.querySelector('.dutch__selections-list');\n    const addBtn = container.querySelector('.dutch__add-btn');\n    const resetBtn = container.querySelector('.dutch__reset');\n\n    const returnValue = container.querySelector('.dutch__return-value');\n    const profitValue = container.querySelector('.dutch__profit-value');\n    const probabilityValue = container.querySelector('.dutch__probability-value');\n\n    let selectionCount = 0;\n\n    const placeholders = {\n        'Decimal': '2.50',\n        'Fractional': '3/2',\n        'American': '+150'\n    };\n\n    const hints = {\n        'Decimal': '输入小数赔率（例如：2.50, 3.00）',\n        'Fractional': '输入分数赔率（例如：3\\/2, 5\\/1）',\n        'American': '输入美式赔率（例如：\\u002b150, -110）'\n    };\n\n    \n    function validateFractionalCoefficient(coefficient) {\n        return /^\\d+\\/\\d+$/.test(coefficient);\n    }\n\n    function validateDecimalCoefficient(coefficient) {\n        return /^\\d+(\\.\\d+)?$/.test(coefficient) \u0026\u0026 parseFloat(coefficient) \u003e 1;\n    }\n\n    function validateAmericanCoefficient(coefficient) {\n        return /^[-+]?\\d+$/.test(coefficient);\n    }\n\n    \n    function convertFractionToDecimal(fraction) {\n        const parts = fraction.split('/');\n        if (parts.length !== 2) return null;\n        const numerator = parseFloat(parts[0]);\n        const denominator = parseFloat(parts[1]);\n        if (isNaN(numerator) || isNaN(denominator) || denominator === 0) return null;\n        return (numerator / denominator) + 1;\n    }\n\n    function convertAmericanToDecimal(americanOdds) {\n        const oddsValue = parseFloat(americanOdds);\n        if (isNaN(oddsValue)) return null;\n        if (oddsValue \u003e 0) {\n            return (oddsValue / 100) + 1;\n        } else if (oddsValue \u003c 0) {\n            return (100 / Math.abs(oddsValue)) + 1;\n        }\n        return 2;\n    }\n\n    function getDecimalOdds(oddsString) {\n        const type = oddsTypeSelect.value;\n        const odds = oddsString.trim();\n\n        if (type === 'Fractional') {\n            if (!validateFractionalCoefficient(odds)) return null;\n            return convertFractionToDecimal(odds);\n        } else if (type === 'Decimal') {\n            if (!validateDecimalCoefficient(odds)) return null;\n            return parseFloat(odds);\n        } else if (type === 'American') {\n            if (!validateAmericanCoefficient(odds)) return null;\n            return convertAmericanToDecimal(odds);\n        }\n        return null;\n    }\n\n    function createSelectionRow() {\n        selectionCount++;\n        const row = document.createElement('div');\n        row.className = 'dutch__selection-row';\n        row.dataset.id = selectionCount;\n\n        const type = oddsTypeSelect.value;\n\n        row.innerHTML = `\n            \u003cdiv class=\"dutch__selection-num\"\u003e${selectionCount}\u003c/div\u003e\n            \u003cinput type=\"text\" class=\"dutch__selection-input dutch__odds-input\" placeholder=\"${placeholders[type]}\" title=\"${hints[type]}\" /\u003e\n            \u003cdiv class=\"dutch__selection-stake\"\u003e-\u003c/div\u003e\n            \u003cdiv class=\"dutch__selection-return\"\u003e-\u003c/div\u003e\n            \u003cdiv class=\"dutch__selection-prob\"\u003e-\u003c/div\u003e\n            \u003cbutton type=\"button\" class=\"dutch__remove-btn\"\u003e${'删除'}\u003c/button\u003e\n        `;\n\n        const oddsInput = row.querySelector('.dutch__odds-input');\n        const removeBtn = row.querySelector('.dutch__remove-btn');\n\n        oddsInput.addEventListener('input', calculate);\n        removeBtn.addEventListener('click', function() {\n            row.remove();\n            renumberSelections();\n            calculate();\n        });\n\n        return row;\n    }\n\n    function renumberSelections() {\n        const rows = selectionsList.querySelectorAll('.dutch__selection-row');\n        rows.forEach((row, index) =\u003e {\n            row.querySelector('.dutch__selection-num').textContent = index + 1;\n        });\n        selectionCount = rows.length;\n    }\n\n    function calculate() {\n        const totalStake = parseFloat(totalStakeInput.value);\n        const rows = selectionsList.querySelectorAll('.dutch__selection-row');\n\n        if (isNaN(totalStake) || totalStake \u003c= 0 || rows.length === 0) {\n            resetOutput();\n            return;\n        }\n\n        \n        const selections = [];\n\n        rows.forEach(row =\u003e {\n            const oddsInput = row.querySelector('.dutch__odds-input');\n            const decimalOdds = getDecimalOdds(oddsInput.value);\n\n            if (decimalOdds === null || decimalOdds \u003c= 1) {\n                if (oddsInput.value.trim() !== '') {\n                    oddsInput.classList.add('invalid');\n                } else {\n                    oddsInput.classList.remove('invalid');\n                }\n            } else {\n                oddsInput.classList.remove('invalid');\n                selections.push({\n                    row: row,\n                    odds: decimalOdds,\n                    impliedProb: 1 / decimalOdds\n                });\n            }\n        });\n\n        if (selections.length \u003c 2) {\n            resetOutput();\n            \n            rows.forEach(row =\u003e {\n                row.querySelector('.dutch__selection-stake').textContent = '-';\n                row.querySelector('.dutch__selection-return').textContent = '-';\n                row.querySelector('.dutch__selection-prob').textContent = '-';\n            });\n            return;\n        }\n\n        \n        const sumInverseOdds = selections.reduce((sum, sel) =\u003e sum + sel.impliedProb, 0);\n        const potentialReturn = totalStake / sumInverseOdds;\n\n        selections.forEach(sel =\u003e {\n            const stake = totalStake * sel.impliedProb / sumInverseOdds;\n            const returnAmount = stake * sel.odds;\n\n            sel.row.querySelector('.dutch__selection-stake').textContent = '$' + stake.toFixed(2);\n            sel.row.querySelector('.dutch__selection-return').textContent = '$' + returnAmount.toFixed(2);\n            sel.row.querySelector('.dutch__selection-prob').textContent = (sel.impliedProb * 100).toFixed(1) + '%';\n        });\n\n        \n        rows.forEach(row =\u003e {\n            if (!selections.find(s =\u003e s.row === row)) {\n                row.querySelector('.dutch__selection-stake').textContent = '-';\n                row.querySelector('.dutch__selection-return').textContent = '-';\n                row.querySelector('.dutch__selection-prob').textContent = '-';\n            }\n        });\n\n        const profit = potentialReturn - totalStake;\n        const combinedProbability = sumInverseOdds * 100;\n\n        returnValue.textContent = '$' + potentialReturn.toFixed(2);\n\n        profitValue.textContent = (profit \u003e= 0 ? '+$' : '-$') + Math.abs(profit).toFixed(2);\n        profitValue.className = 'dutch__output-value ' + (profit \u003e= 0 ? 'positive' : 'negative');\n\n        probabilityValue.textContent = combinedProbability.toFixed(1) + '%';\n        probabilityValue.className = 'dutch__output-value ' + (combinedProbability \u003c 100 ? 'positive' : (combinedProbability \u003e 100 ? 'negative' : 'warning'));\n    }\n\n    function resetOutput() {\n        returnValue.textContent = '-';\n        returnValue.className = 'dutch__output-value';\n        profitValue.textContent = '-';\n        profitValue.className = 'dutch__output-value';\n        probabilityValue.textContent = '-';\n        probabilityValue.className = 'dutch__output-value';\n    }\n\n    function resetAll() {\n        selectionsList.innerHTML = '';\n        selectionCount = 0;\n        totalStakeInput.value = '100';\n\n        \n        selectionsList.appendChild(createSelectionRow());\n        selectionsList.appendChild(createSelectionRow());\n\n        resetOutput();\n    }\n\n    \n    oddsTypeSelect.addEventListener('change', function() {\n        const type = this.value;\n\n        selectionsList.querySelectorAll('.dutch__odds-input').forEach(input =\u003e {\n            input.placeholder = placeholders[type];\n            input.title = hints[type];\n        });\n        calculate();\n    });\n\n    totalStakeInput.addEventListener('input', calculate);\n    addBtn.addEventListener('click', function() {\n        selectionsList.appendChild(createSelectionRow());\n    });\n    resetBtn.addEventListener('click', resetAll);\n\n    \n    selectionsList.appendChild(createSelectionRow());\n    selectionsList.appendChild(createSelectionRow());\n})();\n\u003c/script\u003e","title":"荷兰投注计算器 - 多选项均等盈利"},{"content":" 赔率格式 小数 分数 美式 选项 1 选项 2 选项 3 选项 4 选项 5 选项 6 单位投注 投注数量 57 总投注 - 派彩 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/heinz-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"heinz_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 5\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 6\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e单位投注\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投注数量\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e57\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e总投注\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [2, 3, 4, 5, 6];\n    var root = document.getElementById('heinz_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"亨氏投注计算器 - 57注系统回报"},{"content":" 凯利公式计算器 步骤1：输入投注详情 赔率格式 小数 分数 美式 赔率 小数: 2.50 | 分数: 3/2 | 美式: \u0026#43;150 胜率 (%) (%) 您估计的获胜概率（1-99%） 资金 ($) 可用于投注的总金额 步骤2：选择风险等级 全额凯利 半额凯利 四分之一凯利 半凯利或四分之一凯利可降低风险，但也会减少潜在收益 结果 优势 — 凯利 % — 隐含概率 — 期望值 — 最佳投注额 — 重置 凯利公式：f* = (bp - q) / b | b = 赔率 - 1，p = 赢率，q = 1 - p ","permalink":"https://calculators-odds.com/zh/kelly-criterion-calculator/","summary":"\u003cstyle\u003e\n    .kelly {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 12px;\n        padding: 25px;\n        box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n    }\n\n    .kelly__title {\n        font-size: 24px;\n        font-weight: bold;\n        text-align: center;\n        margin-bottom: 25px;\n        color: #e8e8e8;\n    }\n\n    .kelly__section {\n        background: #2d333b;\n        border-radius: 8px;\n        padding: 20px;\n        margin-bottom: 20px;\n    }\n\n    .kelly__section-title {\n        font-size: 14px;\n        font-weight: 600;\n        text-transform: uppercase;\n        letter-spacing: 0.5px;\n        color: #4CAF50;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 1px solid rgba(255,255,255,0.1);\n    }\n\n    .kelly__grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .kelly__field {\n        display: flex;\n        flex-direction: column;\n    }\n\n    .kelly__field--full {\n        grid-column: 1 / -1;\n    }\n\n    .kelly__label {\n        font-size: 13px;\n        font-weight: 500;\n        margin-bottom: 6px;\n        color: rgba(232, 232, 232, 0.9);\n    }\n\n    .kelly__input, .kelly__select {\n        background: #1e2328;\n        color: #e8e8e8;\n        padding: 12px 14px;\n        border: 2px solid rgba(255,255,255,0.1);\n        border-radius: 6px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s, box-shadow 0.2s;\n    }\n\n    .kelly__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .kelly__input:focus, .kelly__select:focus {\n        outline: none;\n        border-color: #4CAF50;\n        box-shadow: 0 0 0 3px rgba(76, 175, 80, 0.2);\n    }\n\n    .kelly__select {\n        cursor: pointer;\n        appearance: none;\n        background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%23e8e8e8' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E\");\n        background-repeat: no-repeat;\n        background-position: right 12px center;\n        padding-right: 36px;\n    }\n\n    .kelly__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .kelly__fraction-row {\n        display: flex;\n        gap: 10px;\n    }\n\n    .kelly__fraction-btn {\n        flex: 1;\n        padding: 12px 8px;\n        border: 2px solid rgba(255,255,255,0.2);\n        background: transparent;\n        color: #e8e8e8;\n        border-radius: 6px;\n        cursor: pointer;\n        font-size: 13px;\n        font-weight: 500;\n        transition: all 0.2s;\n    }\n\n    .kelly__fraction-btn:hover {\n        border-color: #4CAF50;\n        background: rgba(76, 175, 80, 0.1);\n    }\n\n    .kelly__fraction-btn.active {\n        background: #4CAF50;\n        border-color: #4CAF50;\n        color: #fff;\n    }\n\n    .kelly__results {\n        background: #2d333b;\n        border-radius: 8px;\n        padding: 20px;\n    }\n\n    .kelly__results-title {\n        font-size: 14px;\n        font-weight: 600;\n        text-transform: uppercase;\n        letter-spacing: 0.5px;\n        color: #4CAF50;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 1px solid rgba(255,255,255,0.1);\n    }\n\n    .kelly__metrics {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 12px;\n        margin-bottom: 20px;\n    }\n\n    .kelly__metric {\n        background: #1e2328;\n        padding: 15px;\n        border-radius: 6px;\n        text-align: center;\n    }\n\n    .kelly__metric-label {\n        font-size: 11px;\n        text-transform: uppercase;\n        letter-spacing: 0.5px;\n        color: rgba(232, 232, 232, 0.6);\n        margin-bottom: 6px;\n    }\n\n    .kelly__metric-value {\n        font-size: 20px;\n        font-weight: bold;\n        color: #e8e8e8;\n    }\n\n    .kelly__metric-value.positive {\n        color: #4CAF50;\n    }\n\n    .kelly__metric-value.negative {\n        color: #f44336;\n    }\n\n    .kelly__recommendation {\n        background: linear-gradient(135deg, rgba(76, 175, 80, 0.2), rgba(76, 175, 80, 0.1));\n        border: 2px solid #4CAF50;\n        border-radius: 8px;\n        padding: 20px;\n        text-align: center;\n    }\n\n    .kelly__recommendation.no-bet {\n        background: linear-gradient(135deg, rgba(244, 67, 54, 0.2), rgba(244, 67, 54, 0.1));\n        border-color: #f44336;\n    }\n\n    .kelly__recommendation-label {\n        font-size: 12px;\n        text-transform: uppercase;\n        letter-spacing: 0.5px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .kelly__recommendation-value {\n        font-size: 28px;\n        font-weight: bold;\n        color: #4CAF50;\n    }\n\n    .kelly__recommendation.no-bet .kelly__recommendation-value {\n        color: #f44336;\n        font-size: 18px;\n    }\n\n    .kelly__reset {\n        display: block;\n        width: 100%;\n        margin-top: 15px;\n        padding: 12px;\n        background: rgba(255,255,255,0.1);\n        color: #e8e8e8;\n        border: none;\n        border-radius: 6px;\n        font-size: 14px;\n        font-weight: 500;\n        cursor: pointer;\n        transition: background 0.2s;\n    }\n\n    .kelly__reset:hover {\n        background: rgba(255,255,255,0.15);\n    }\n\n    .kelly__formula {\n        margin-top: 15px;\n        padding: 12px;\n        background: rgba(255,255,255,0.05);\n        border-radius: 6px;\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        text-align: center;\n    }\n\n    .kelly__input.invalid {\n        border-color: #f44336 !important;\n        box-shadow: 0 0 0 3px rgba(244, 67, 54, 0.2);\n    }\n\n    @media (max-width: 500px) {\n        .kelly__grid {\n            grid-template-columns: 1fr;\n        }\n        .kelly__metrics {\n            grid-template-columns: 1fr;\n        }\n        .kelly__fraction-row {\n            flex-direction: column;\n        }\n        .kelly__recommendation-value {\n            font-size: 22px;\n        }\n    }\n\u003c/style\u003e\n\n\u003cdiv class=\"kelly\"\u003e\n    \u003cdiv class=\"kelly__title\"\u003e凯利公式计算器\u003c/div\u003e\n\n    \n    \u003cdiv class=\"kelly__section\"\u003e\n        \u003cdiv class=\"kelly__section-title\"\u003e步骤1：输入投注详情\u003c/div\u003e\n        \u003cdiv class=\"kelly__grid\"\u003e\n            \u003cdiv class=\"kelly__field\"\u003e\n                \u003clabel class=\"kelly__label\"\u003e赔率格式\u003c/label\u003e\n                \u003cselect class=\"kelly__select kelly__odds-type\"\u003e\n                    \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n                    \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n                    \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n                \u003c/select\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"kelly__field\"\u003e\n                \u003clabel class=\"kelly__label\"\u003e赔率\u003c/label\u003e\n                \u003cinput type=\"text\" class=\"kelly__input kelly__odds\" placeholder=\"2.50\"\u003e\n                \u003cspan class=\"kelly__hint\"\u003e小数: 2.50 | 分数: 3/2 | 美式: \u0026#43;150\u003c/span\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"kelly__field\"\u003e\n                \u003clabel class=\"kelly__label\"\u003e胜率 (%) (%)\u003c/label\u003e\n                \u003cinput type=\"number\" class=\"kelly__input kelly__probability\" placeholder=\"55\" min=\"1\" max=\"99\" step=\"0.1\"\u003e\n                \u003cspan class=\"kelly__hint\"\u003e您估计的获胜概率（1-99%）\u003c/span\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"kelly__field\"\u003e\n                \u003clabel class=\"kelly__label\"\u003e资金 ($)\u003c/label\u003e\n                \u003cinput type=\"number\" class=\"kelly__input kelly__bankroll\" placeholder=\"1000\" min=\"0\" step=\"1\"\u003e\n                \u003cspan class=\"kelly__hint\"\u003e可用于投注的总金额\u003c/span\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \n    \u003cdiv class=\"kelly__section\"\u003e\n        \u003cdiv class=\"kelly__section-title\"\u003e步骤2：选择风险等级\u003c/div\u003e\n        \u003cdiv class=\"kelly__field kelly__field--full\"\u003e\n            \u003cdiv class=\"kelly__fraction-row\"\u003e\n                \u003cbutton type=\"button\" class=\"kelly__fraction-btn active\" data-fraction=\"1\"\u003e全额凯利\u003c/button\u003e\n                \u003cbutton type=\"button\" class=\"kelly__fraction-btn\" data-fraction=\"0.5\"\u003e半额凯利\u003c/button\u003e\n                \u003cbutton type=\"button\" class=\"kelly__fraction-btn\" data-fraction=\"0.25\"\u003e四分之一凯利\u003c/button\u003e\n            \u003c/div\u003e\n            \u003cspan class=\"kelly__hint\" style=\"margin-top: 8px; display: block;\"\u003e半凯利或四分之一凯利可降低风险，但也会减少潜在收益\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \n    \u003cdiv class=\"kelly__results\"\u003e\n        \u003cdiv class=\"kelly__results-title\"\u003e结果\u003c/div\u003e\n\n        \u003cdiv class=\"kelly__metrics\"\u003e\n            \u003cdiv class=\"kelly__metric\"\u003e\n                \u003cdiv class=\"kelly__metric-label\"\u003e优势\u003c/div\u003e\n                \u003cdiv class=\"kelly__metric-value kelly__edge\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"kelly__metric\"\u003e\n                \u003cdiv class=\"kelly__metric-label\"\u003e凯利 %\u003c/div\u003e\n                \u003cdiv class=\"kelly__metric-value kelly__kelly-pct\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"kelly__metric\"\u003e\n                \u003cdiv class=\"kelly__metric-label\"\u003e隐含概率\u003c/div\u003e\n                \u003cdiv class=\"kelly__metric-value kelly__implied\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"kelly__metric\"\u003e\n                \u003cdiv class=\"kelly__metric-label\"\u003e期望值\u003c/div\u003e\n                \u003cdiv class=\"kelly__metric-value kelly__ev\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \u003cdiv class=\"kelly__recommendation\"\u003e\n            \u003cdiv class=\"kelly__recommendation-label\"\u003e最佳投注额\u003c/div\u003e\n            \u003cdiv class=\"kelly__recommendation-value\"\u003e—\u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cbutton class=\"kelly__reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\n    \u003cdiv class=\"kelly__formula\"\u003e\n        凯利公式：f* = (bp - q) / b | b = 赔率 - 1，p = 赢率，q = 1 - p\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const oddsTypeSelect = container.querySelector('.kelly__odds-type');\n    const oddsInput = container.querySelector('.kelly__odds');\n    const probabilityInput = container.querySelector('.kelly__probability');\n    const bankrollInput = container.querySelector('.kelly__bankroll');\n    const fractionBtns = container.querySelectorAll('.kelly__fraction-btn');\n    const resetBtn = container.querySelector('.kelly__reset');\n\n    const kellyPctEl = container.querySelector('.kelly__kelly-pct');\n    const edgeEl = container.querySelector('.kelly__edge');\n    const evEl = container.querySelector('.kelly__ev');\n    const impliedEl = container.querySelector('.kelly__implied');\n    const recommendationEl = container.querySelector('.kelly__recommendation');\n    const recommendationValueEl = container.querySelector('.kelly__recommendation-value');\n\n    let selectedFraction = 1;\n\n    const placeholders = {\n        Decimal: '2.50',\n        Fractional: '3/2',\n        American: '+150'\n    };\n\n    function validateFractional(value) {\n        return /^\\d+\\/\\d+$/.test(value);\n    }\n\n    function validateDecimal(value) {\n        return /^\\d+(\\.\\d+)?$/.test(value) \u0026\u0026 parseFloat(value) \u003e 1;\n    }\n\n    function validateAmerican(value) {\n        return /^[-+]?\\d+$/.test(value);\n    }\n\n    function toDecimal(value, type) {\n        if (type === 'Fractional') {\n            if (!validateFractional(value)) return null;\n            const parts = value.split('/');\n            return (parseFloat(parts[0]) / parseFloat(parts[1])) + 1;\n        } else if (type === 'Decimal') {\n            if (!validateDecimal(value)) return null;\n            return parseFloat(value);\n        } else if (type === 'American') {\n            if (!validateAmerican(value)) return null;\n            const odds = parseFloat(value);\n            return odds \u003e 0 ? (odds / 100) + 1 : (100 / Math.abs(odds)) + 1;\n        }\n        return null;\n    }\n\n    function calculate() {\n        const type = oddsTypeSelect.value;\n        const decimalOdds = toDecimal(oddsInput.value.trim(), type);\n        const winProb = parseFloat(probabilityInput.value) / 100;\n        const bankroll = parseFloat(bankrollInput.value);\n\n        \n        if (!decimalOdds || decimalOdds \u003c= 1) {\n            oddsInput.classList.toggle('invalid', oddsInput.value.trim() !== '');\n            resetOutput();\n            return;\n        }\n        oddsInput.classList.remove('invalid');\n\n        if (isNaN(winProb) || winProb \u003c= 0 || winProb \u003e= 1) {\n            probabilityInput.classList.toggle('invalid', probabilityInput.value.trim() !== '');\n            resetOutput();\n            return;\n        }\n        probabilityInput.classList.remove('invalid');\n\n        \n        const b = decimalOdds - 1;\n        const p = winProb;\n        const q = 1 - p;\n\n        const kellyPct = (b * p - q) / b;\n        const edge = (decimalOdds * p) - 1;\n        const impliedProb = 1 / decimalOdds;\n\n        \n        edgeEl.textContent = (edge * 100).toFixed(2) + '%';\n        edgeEl.className = 'kelly__metric-value ' + (edge \u003e 0 ? 'positive' : 'negative');\n\n        kellyPctEl.textContent = (kellyPct * 100).toFixed(2) + '%';\n        kellyPctEl.className = 'kelly__metric-value ' + (kellyPct \u003e 0 ? 'positive' : 'negative');\n\n        impliedEl.textContent = (impliedProb * 100).toFixed(2) + '%';\n\n        evEl.textContent = (edge \u003e 0 ? '+' : '') + edge.toFixed(4);\n        evEl.className = 'kelly__metric-value ' + (edge \u003e 0 ? 'positive' : 'negative');\n\n        \n        if (kellyPct \u003c= 0) {\n            recommendationEl.classList.add('no-bet');\n            recommendationValueEl.textContent = '不投注（负优势）';\n        } else {\n            recommendationEl.classList.remove('no-bet');\n            const adjustedKelly = kellyPct * selectedFraction;\n\n            if (!isNaN(bankroll) \u0026\u0026 bankroll \u003e 0) {\n                const stake = bankroll * adjustedKelly;\n                recommendationValueEl.textContent = '$' + stake.toFixed(2) + ' (' + (adjustedKelly * 100).toFixed(1) + '%)';\n            } else {\n                recommendationValueEl.textContent = (adjustedKelly * 100).toFixed(2) + '% of bankroll';\n            }\n        }\n    }\n\n    function resetOutput() {\n        edgeEl.textContent = '—';\n        edgeEl.className = 'kelly__metric-value';\n        kellyPctEl.textContent = '—';\n        kellyPctEl.className = 'kelly__metric-value';\n        impliedEl.textContent = '—';\n        evEl.textContent = '—';\n        evEl.className = 'kelly__metric-value';\n        recommendationEl.classList.remove('no-bet');\n        recommendationValueEl.textContent = '—';\n    }\n\n    function resetAll() {\n        oddsInput.value = '';\n        probabilityInput.value = '';\n        bankrollInput.value = '';\n        oddsInput.classList.remove('invalid');\n        probabilityInput.classList.remove('invalid');\n\n        fractionBtns.forEach(btn =\u003e btn.classList.remove('active'));\n        fractionBtns[0].classList.add('active');\n        selectedFraction = 1;\n\n        resetOutput();\n    }\n\n    \n    oddsTypeSelect.addEventListener('change', function() {\n        oddsInput.placeholder = placeholders[this.value];\n        calculate();\n    });\n\n    oddsInput.addEventListener('input', calculate);\n    probabilityInput.addEventListener('input', calculate);\n    bankrollInput.addEventListener('input', calculate);\n\n    fractionBtns.forEach(btn =\u003e {\n        btn.addEventListener('click', function() {\n            fractionBtns.forEach(b =\u003e b.classList.remove('active'));\n            this.classList.add('active');\n            selectedFraction = parseFloat(this.dataset.fraction);\n            calculate();\n        });\n    });\n\n    resetBtn.addEventListener('click', resetAll);\n})();\n\u003c/script\u003e","title":"凯利公式计算器 - 最佳投注额计算"},{"content":" 胜率 % 连胜长度 投注次数 连胜概率 - 连败概率 - 预期最长 - 重置 ","permalink":"https://calculators-odds.com/zh/streak-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"streak_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e胜率\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-prob\" type=\"text\" placeholder=\"50\" /\u003e\n        \u003cspan class=\"calc-wrap__unit\"\u003e%\u003c/span\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e连胜长度\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-length\" type=\"text\" placeholder=\"5\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e投注次数\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-numbets\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e连胜概率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-winstreak\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e连败概率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-losestreak\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e预期最长\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-expected\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('streak_0');\n    var probEl = root.querySelector('.js-prob');\n    var lengthEl = root.querySelector('.js-length');\n    var numBetsEl = root.querySelector('.js-numbets');\n    var winStreakEl = root.querySelector('.js-winstreak');\n    var loseStreakEl = root.querySelector('.js-losestreak');\n    var expectedEl = root.querySelector('.js-expected');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var prob = parseFloat(probEl.value) / 100;\n        var length = parseInt(lengthEl.value);\n        var numBets = parseInt(numBetsEl.value);\n\n        if (isNaN(prob) || prob \u003c= 0 || prob \u003e= 1 || isNaN(length) || length \u003c 1 || isNaN(numBets) || numBets \u003c 1) {\n            winStreakEl.textContent = '-'; loseStreakEl.textContent = '-'; expectedEl.textContent = '-'; return;\n        }\n\n        \n        var winStreakProb = Math.pow(prob, length);\n        var loseStreakProb = Math.pow(1 - prob, length);\n\n        \n        var winAtLeastOnce = 1 - Math.pow(1 - winStreakProb, Math.max(1, numBets - length + 1));\n        var loseAtLeastOnce = 1 - Math.pow(1 - loseStreakProb, Math.max(1, numBets - length + 1));\n\n        \n        var expectedLongest = Math.log(numBets) / Math.log(1 / prob);\n\n        winStreakEl.textContent = (winAtLeastOnce * 100).toFixed(1) + '%';\n        loseStreakEl.textContent = (loseAtLeastOnce * 100).toFixed(1) + '%';\n        expectedEl.textContent = expectedLongest.toFixed(1) + ' bets';\n    }\n\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        probEl.value=''; lengthEl.value=''; numBetsEl.value='';\n        winStreakEl.textContent='-'; loseStreakEl.textContent='-'; expectedEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"连胜连败计算器 - 博彩连胜概率"},{"content":" 独赢赔率 投注类型 风险 赢取 风险金额 您的风险 - 赢取 - 派彩 - 隐含概率 - 小数 - 重置 ","permalink":"https://calculators-odds.com/zh/moneyline-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"moneyline_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e独赢赔率\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"-150\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e投注类型\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-bettype\"\u003e\n            \u003coption value=\"risk\"\u003e风险\u003c/option\u003e\n            \u003coption value=\"towin\"\u003e赢取\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label js-amountlabel\"\u003e风险金额\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-amount\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e您的风险\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-risk\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e赢取\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-towin\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e隐含概率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-prob\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e小数\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-decimal\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('moneyline_0');\n    var oddsEl = root.querySelector('.js-odds');\n    var betTypeEl = root.querySelector('.js-bettype');\n    var amountEl = root.querySelector('.js-amount');\n    var amountLabelEl = root.querySelector('.js-amountlabel');\n    var riskEl = root.querySelector('.js-risk');\n    var toWinEl = root.querySelector('.js-towin');\n    var payoutEl = root.querySelector('.js-payout');\n    var probEl = root.querySelector('.js-prob');\n    var decimalEl = root.querySelector('.js-decimal');\n    var resetBtn = root.querySelector('.js-reset');\n\n    betTypeEl.addEventListener('change', function() {\n        amountLabelEl.textContent = betTypeEl.value === 'risk' ? '风险金额' : '赢取金额';\n        update();\n    });\n\n    function update() {\n        var ml = parseInt(oddsEl.value);\n        var amount = parseFloat(amountEl.value);\n        var betType = betTypeEl.value;\n\n        if (isNaN(ml) || ml === 0) {\n            oddsEl.classList.toggle('invalid', !!oddsEl.value.trim());\n            riskEl.textContent='-'; toWinEl.textContent='-'; payoutEl.textContent='-'; probEl.textContent='-'; decimalEl.textContent='-'; return;\n        }\n        oddsEl.classList.remove('invalid');\n\n        var dec;\n        if (ml \u003e 0) dec = (ml / 100) + 1;\n        else dec = (100 / Math.abs(ml)) + 1;\n\n        var prob;\n        if (ml \u003c 0) prob = Math.abs(ml) / (Math.abs(ml) + 100);\n        else prob = 100 / (ml + 100);\n\n        decimalEl.textContent = dec.toFixed(3);\n        probEl.textContent = (prob * 100).toFixed(1) + '%';\n\n        if (!amount || amount \u003c= 0) { riskEl.textContent='-'; toWinEl.textContent='-'; payoutEl.textContent='-'; return; }\n\n        var risk, toWin, payout;\n        if (betType === 'risk') {\n            risk = amount;\n            toWin = amount * (dec - 1);\n            payout = amount * dec;\n        } else {\n            toWin = amount;\n            risk = amount / (dec - 1);\n            payout = risk + toWin;\n        }\n\n        riskEl.textContent = formatNumber(risk);\n        toWinEl.textContent = formatNumber(toWin);\n        payoutEl.textContent = formatNumber(payout);\n    }\n\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        oddsEl.value=''; amountEl.value=''; betTypeEl.selectedIndex=0;\n        oddsEl.classList.remove('invalid');\n        riskEl.textContent='-'; toWinEl.textContent='-'; payoutEl.textContent='-'; probEl.textContent='-'; decimalEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"美式赔率计算器 - 计算美式投注派彩"},{"content":" 赔率格式 小数 分数 美式 A队赔率 B队赔率 让球 投注额 派彩（A队） - 派彩（B队） - A队隐含概率 - B队隐含概率 - 博彩公司利润率 - 重置 ","permalink":"https://calculators-odds.com/zh/margin-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"margin_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eA队赔率\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-oddsa\" type=\"text\" placeholder=\"1.80\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003eB队赔率\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-oddsb\" type=\"text\" placeholder=\"2.10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e让球\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-handicap\" type=\"text\" placeholder=\"-1.5\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e投注额\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩（A队）\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payouta\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩（B队）\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payoutb\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eA队隐含概率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-proba\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003eB队隐含概率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-probb\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e博彩公司利润率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-margin\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('margin_0');\n    var formatEl = root.querySelector('.js-format');\n    var oddsAEl = root.querySelector('.js-oddsa');\n    var oddsBEl = root.querySelector('.js-oddsb');\n    var handicapEl = root.querySelector('.js-handicap');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutAEl = root.querySelector('.js-payouta');\n    var payoutBEl = root.querySelector('.js-payoutb');\n    var probAEl = root.querySelector('.js-proba');\n    var probBEl = root.querySelector('.js-probb');\n    var marginEl = root.querySelector('.js-margin');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var decA = convertToDecimal(oddsAEl.value.trim(), format);\n        var decB = convertToDecimal(oddsBEl.value.trim(), format);\n        var stake = parseFloat(stakeEl.value);\n\n        if (!decA) oddsAEl.classList.toggle('invalid', !!oddsAEl.value.trim());\n        else oddsAEl.classList.remove('invalid');\n        if (!decB) oddsBEl.classList.toggle('invalid', !!oddsBEl.value.trim());\n        else oddsBEl.classList.remove('invalid');\n\n        if (!decA || !decB) {\n            payoutAEl.textContent='-'; payoutBEl.textContent='-'; probAEl.textContent='-'; probBEl.textContent='-'; marginEl.textContent='-'; return;\n        }\n\n        var probA = (1 / decA) * 100;\n        var probB = (1 / decB) * 100;\n        var margin = (probA + probB) - 100;\n\n        probAEl.textContent = probA.toFixed(1) + '%';\n        probBEl.textContent = probB.toFixed(1) + '%';\n        marginEl.textContent = margin.toFixed(2) + '%';\n\n        if (stake \u0026\u0026 stake \u003e 0) {\n            payoutAEl.textContent = formatNumber(stake * decA);\n            payoutBEl.textContent = formatNumber(stake * decB);\n        } else {\n            payoutAEl.textContent = '-'; payoutBEl.textContent = '-';\n        }\n    }\n\n    formatEl.addEventListener('change', function() {\n        var ph = getOddsPlaceholder(formatEl.value);\n        oddsAEl.placeholder = ph; oddsBEl.placeholder = ph;\n        update();\n    });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        oddsAEl.value=''; oddsBEl.value=''; handicapEl.value=''; stakeEl.value='';\n        formatEl.selectedIndex=0; oddsAEl.classList.remove('invalid'); oddsBEl.classList.remove('invalid');\n        payoutAEl.textContent='-'; payoutBEl.textContent='-'; probAEl.textContent='-'; probBEl.textContent='-'; marginEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"盘口计算器 - 让分盘和大小盘派彩"},{"content":" 小数 分数 美式 隐含概率 - 重置 ","permalink":"https://calculators-odds.com/zh/odds-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"converter_0\"\u003e\n    \u003cdiv class=\"calc-wrap__grid calc-wrap__grid--3\"\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e小数\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-decimal\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e分数\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-fractional\" type=\"text\" placeholder=\"3/2\" /\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e美式\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-american\" type=\"text\" placeholder=\"+150\" /\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e隐含概率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-probability\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const root = document.getElementById('converter_0');\n    const decEl = root.querySelector('.js-decimal');\n    const fracEl = root.querySelector('.js-fractional');\n    const amerEl = root.querySelector('.js-american');\n    const probEl = root.querySelector('.js-probability');\n    const resetBtn = root.querySelector('.js-reset');\n    let updating = false;\n\n    function fromDecimal(d, source) {\n        if (source !== decEl) decEl.value = d.toFixed(2);\n        if (source !== fracEl) fracEl.value = convertDecimalToFractional(d) || '-';\n        if (source !== amerEl) amerEl.value = convertDecimalToAmerican(d) || '-';\n        probEl.textContent = (100 / d).toFixed(2) + '%';\n    }\n\n    function clearOthers(source) {\n        if (source !== decEl) decEl.value = '';\n        if (source !== fracEl) fracEl.value = '';\n        if (source !== amerEl) amerEl.value = '';\n        probEl.textContent = '-';\n    }\n\n    decEl.addEventListener('input', function() {\n        if (updating) return; updating = true;\n        const v = decEl.value.trim();\n        if (!v) { clearOthers(decEl); updating = false; return; }\n        const d = parseFloat(v);\n        if (!isNaN(d) \u0026\u0026 d \u003e 1) {\n            decEl.classList.remove('invalid');\n            fromDecimal(d, decEl);\n        } else {\n            decEl.classList.add('invalid');\n            clearOthers(decEl);\n        }\n        updating = false;\n    });\n\n    fracEl.addEventListener('input', function() {\n        if (updating) return; updating = true;\n        const v = fracEl.value.trim();\n        if (!v) { clearOthers(fracEl); updating = false; return; }\n        if (validateFractionalCoefficient(v)) {\n            fracEl.classList.remove('invalid');\n            fromDecimal(convertFractionToDecimal(v), fracEl);\n        } else {\n            fracEl.classList.add('invalid');\n            clearOthers(fracEl);\n        }\n        updating = false;\n    });\n\n    amerEl.addEventListener('input', function() {\n        if (updating) return; updating = true;\n        const v = amerEl.value.trim();\n        if (!v) { clearOthers(amerEl); updating = false; return; }\n        if (validateAmericanCoefficient(v)) {\n            amerEl.classList.remove('invalid');\n            fromDecimal(convertAmericanToDecimal(v), amerEl);\n        } else {\n            amerEl.classList.add('invalid');\n            clearOthers(amerEl);\n        }\n        updating = false;\n    });\n\n    resetBtn.addEventListener('click', function() {\n        decEl.value = ''; fracEl.value = ''; amerEl.value = '';\n        [decEl, fracEl, amerEl].forEach(el =\u003e el.classList.remove('invalid'));\n        probEl.textContent = '-';\n    });\n})();\n\u003c/script\u003e","title":"赔率转换器 - 小数、分数和美式赔率转换"},{"content":" 对冲投注计算器 步骤1：选择投注类型 选择资格投注（初始）或免费投注（奖励） 资格投注 免费投注？ Free Bet Type 本金不返还 本金返还 SNR = 仅返还利润，SR = 包含本金的全额支付 步骤2：输入赔率和投注额 支持赔率 （博彩公司） 博彩公司的小数赔率（如 3.00） 反对赔率 （交易所） 交易所的小数赔率（如 3.10） 支持投注 在博彩公司投注的金额 交易所佣金 (%) 交易所佣金（Betfair ~5%, Smarkets ~2%） 结果 反对投注 - 反对责任 - 支持赢时利润 - 反对赢时利润 - 资格损失 - 评级: - 对冲投注通过在博彩公司支持和在交易所反对来锁定利润。赔率越接近 = 损失越小/利润越高。 重置 ","permalink":"https://calculators-odds.com/zh/matched-betting-calculator/","summary":"\u003cstyle\u003e\n    .matched {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .matched__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .matched__container {\n        width: 100%;\n        max-width: 700px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .matched__section {\n        background: #2d333b;\n        color: #e8e8e8;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .matched__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #2196F3;\n        color: #2196F3;\n    }\n\n    .matched__type-tabs {\n        display: flex;\n        gap: 10px;\n        margin-bottom: 15px;\n    }\n\n    .matched__type-tab {\n        flex: 1;\n        padding: 14px;\n        border: 2px solid #2196F3;\n        background: transparent;\n        color: #e8e8e8;\n        border-radius: 4px;\n        cursor: pointer;\n        font-size: 14px;\n        font-weight: bold;\n        transition: all 0.2s;\n    }\n\n    .matched__type-tab:hover {\n        background: rgba(33, 150, 243, 0.2);\n    }\n\n    .matched__type-tab.active {\n        background: #2196F3;\n        color: #fff;\n    }\n\n    .matched__type-hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        text-align: center;\n        margin-bottom: 10px;\n    }\n\n    .matched__row {\n        display: flex;\n        gap: 15px;\n        margin-bottom: 15px;\n        flex-wrap: wrap;\n    }\n\n    .matched__row:last-child {\n        margin-bottom: 0;\n    }\n\n    .matched__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n        min-width: 140px;\n    }\n\n    .matched__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .matched__input, .matched__select {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .matched__input:focus, .matched__select:focus {\n        outline: none;\n        border-color: #2196F3;\n    }\n\n    .matched__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .matched__select {\n        cursor: pointer;\n    }\n\n    .matched__select option {\n        background: #2d333b;\n        color: #e8e8e8;\n    }\n\n    .matched__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .matched__free-bet-options {\n        display: none;\n        margin-top: 15px;\n        padding-top: 15px;\n        border-top: 1px solid rgba(255,255,255,0.1);\n    }\n\n    .matched__free-bet-options.active {\n        display: block;\n    }\n\n    .matched__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .matched__output-grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .matched__output-item {\n        text-align: center;\n        padding: 15px;\n        background: rgba(255, 255, 255, 0.05);\n        border-radius: 6px;\n    }\n\n    .matched__output-item.highlight {\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n    }\n\n    .matched__output-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .matched__output-value {\n        font-size: 20px;\n        font-weight: bold;\n    }\n\n    .matched__output-value.positive {\n        color: #4CAF50;\n    }\n\n    .matched__output-value.negative {\n        color: #f44336;\n    }\n\n    .matched__profit-box {\n        margin-top: 15px;\n        padding: 20px;\n        border-radius: 8px;\n        text-align: center;\n    }\n\n    .matched__profit-box.qualifying {\n        background: rgba(255, 152, 0, 0.15);\n        border: 2px solid #ff9800;\n    }\n\n    .matched__profit-box.freebet {\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n    }\n\n    .matched__profit-label {\n        font-size: 14px;\n        margin-bottom: 8px;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .matched__profit-value {\n        font-size: 28px;\n        font-weight: bold;\n    }\n\n    .matched__profit-box.qualifying .matched__profit-value {\n        color: #ff9800;\n    }\n\n    .matched__profit-box.freebet .matched__profit-value {\n        color: #4CAF50;\n    }\n\n    .matched__rating {\n        margin-top: 15px;\n        padding: 10px;\n        background: rgba(255, 255, 255, 0.05);\n        border-radius: 4px;\n        font-size: 14px;\n        text-align: center;\n    }\n\n    .matched__rating-value {\n        font-weight: bold;\n        color: #4CAF50;\n    }\n\n    .matched__info {\n        margin-top: 15px;\n        padding: 12px 15px;\n        background: rgba(33, 150, 243, 0.15);\n        border: 1px solid rgba(33, 150, 243, 0.3);\n        border-radius: 4px;\n        font-size: 13px;\n        text-align: center;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .matched__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n        align-self: center;\n    }\n\n    .matched__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 600px) {\n        .matched__row {\n            flex-direction: column;\n        }\n        .matched__output-grid {\n            grid-template-columns: 1fr;\n        }\n        .matched__type-tabs {\n            flex-direction: column;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"matched\"\u003e\n    \u003cdiv class=\"matched__title\"\u003e对冲投注计算器\u003c/div\u003e\n\n    \u003cdiv class=\"matched__container\"\u003e\n        \n        \u003cdiv class=\"matched__section\"\u003e\n            \u003cdiv class=\"matched__section-title\"\u003e步骤1：选择投注类型\u003c/div\u003e\n            \u003cdiv class=\"matched__type-hint\"\u003e选择资格投注（初始）或免费投注（奖励）\u003c/div\u003e\n            \u003cdiv class=\"matched__type-tabs\"\u003e\n                \u003cbutton type=\"button\" class=\"matched__type-tab active\" data-type=\"qualifying\"\u003e资格投注\u003c/button\u003e\n                \u003cbutton type=\"button\" class=\"matched__type-tab\" data-type=\"freebet\"\u003e免费投注？\u003c/button\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"matched__free-bet-options\"\u003e\n                \u003cdiv class=\"matched__row\"\u003e\n                    \u003cdiv class=\"matched__input-group\"\u003e\n                        \u003clabel class=\"matched__label\"\u003eFree Bet Type\u003c/label\u003e\n                        \u003cselect class=\"matched__select matched__freebet-type\"\u003e\n                            \u003coption value=\"snr\"\u003e本金不返还\u003c/option\u003e\n                            \u003coption value=\"sr\"\u003e本金返还\u003c/option\u003e\n                        \u003c/select\u003e\n                        \u003cspan class=\"matched__hint\"\u003eSNR = 仅返还利润，SR = 包含本金的全额支付\u003c/span\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"matched__section\"\u003e\n            \u003cdiv class=\"matched__section-title\"\u003e步骤2：输入赔率和投注额\u003c/div\u003e\n            \u003cdiv class=\"matched__row\"\u003e\n                \u003cdiv class=\"matched__input-group\"\u003e\n                    \u003clabel class=\"matched__label\"\u003e支持赔率 （博彩公司）\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"matched__input matched__back-odds\" placeholder=\"3.00\" min=\"1.01\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"matched__hint\"\u003e博彩公司的小数赔率（如 3.00）\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"matched__input-group\"\u003e\n                    \u003clabel class=\"matched__label\"\u003e反对赔率 （交易所）\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"matched__input matched__lay-odds\" placeholder=\"3.10\" min=\"1.01\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"matched__hint\"\u003e交易所的小数赔率（如 3.10）\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"matched__row\"\u003e\n                \u003cdiv class=\"matched__input-group\"\u003e\n                    \u003clabel class=\"matched__label\"\u003e支持投注\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"matched__input matched__back-stake\" placeholder=\"10.00\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"matched__hint\"\u003e在博彩公司投注的金额\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"matched__input-group\"\u003e\n                    \u003clabel class=\"matched__label\"\u003e交易所佣金 (%)\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"matched__input matched__commission\" placeholder=\"5\" value=\"5\" min=\"0\" max=\"100\" step=\"0.1\" /\u003e\n                    \u003cspan class=\"matched__hint\"\u003e交易所佣金（Betfair ~5%, Smarkets ~2%）\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"matched__section\"\u003e\n            \u003cdiv class=\"matched__output-title\"\u003e结果\u003c/div\u003e\n            \u003cdiv class=\"matched__output-grid\"\u003e\n                \u003cdiv class=\"matched__output-item highlight\"\u003e\n                    \u003cdiv class=\"matched__output-label\"\u003e反对投注\u003c/div\u003e\n                    \u003cdiv class=\"matched__output-value matched__lay-stake-result\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"matched__output-item\"\u003e\n                    \u003cdiv class=\"matched__output-label\"\u003e反对责任\u003c/div\u003e\n                    \u003cdiv class=\"matched__output-value matched__liability-result\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"matched__output-item\"\u003e\n                    \u003cdiv class=\"matched__output-label\"\u003e支持赢时利润\u003c/div\u003e\n                    \u003cdiv class=\"matched__output-value matched__profit-back\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"matched__output-item\"\u003e\n                    \u003cdiv class=\"matched__output-label\"\u003e反对赢时利润\u003c/div\u003e\n                    \u003cdiv class=\"matched__output-value matched__profit-lay\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"matched__profit-box qualifying\"\u003e\n                \u003cdiv class=\"matched__profit-label matched__main-label\"\u003e资格损失\u003c/div\u003e\n                \u003cdiv class=\"matched__profit-value matched__main-result\"\u003e-\u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"matched__rating\"\u003e\n                评级: \u003cspan class=\"matched__rating-value\"\u003e-\u003c/span\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"matched__info\"\u003e\n                对冲投注通过在博彩公司支持和在交易所反对来锁定利润。赔率越接近 = 损失越小/利润越高。\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \u003cbutton class=\"matched__reset\" type=\"button\"\u003e重置\u003c/button\u003e\n    \u003c/div\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const typeTabs = container.querySelectorAll('.matched__type-tab');\n    const freeBetOptions = container.querySelector('.matched__free-bet-options');\n    const freeBetTypeSelect = container.querySelector('.matched__freebet-type');\n\n    const backOddsInput = container.querySelector('.matched__back-odds');\n    const layOddsInput = container.querySelector('.matched__lay-odds');\n    const backStakeInput = container.querySelector('.matched__back-stake');\n    const commissionInput = container.querySelector('.matched__commission');\n\n    const layStakeResult = container.querySelector('.matched__lay-stake-result');\n    const liabilityResult = container.querySelector('.matched__liability-result');\n    const profitBackEl = container.querySelector('.matched__profit-back');\n    const profitLayEl = container.querySelector('.matched__profit-lay');\n    const profitBox = container.querySelector('.matched__profit-box');\n    const mainLabel = container.querySelector('.matched__main-label');\n    const mainResult = container.querySelector('.matched__main-result');\n    const ratingValue = container.querySelector('.matched__rating-value');\n\n    const resetBtn = container.querySelector('.matched__reset');\n\n    let betType = 'qualifying';\n\n    function calculate() {\n        const backOdds = parseFloat(backOddsInput.value);\n        const layOdds = parseFloat(layOddsInput.value);\n        const backStake = parseFloat(backStakeInput.value);\n        const commission = parseFloat(commissionInput.value) / 100;\n\n        \n        if (isNaN(backOdds) || backOdds \u003c= 1) {\n            if (backOddsInput.value.trim() !== '') {\n                backOddsInput.classList.add('invalid');\n            }\n            resetOutput();\n            return;\n        } else {\n            backOddsInput.classList.remove('invalid');\n        }\n\n        if (isNaN(layOdds) || layOdds \u003c= 1) {\n            if (layOddsInput.value.trim() !== '') {\n                layOddsInput.classList.add('invalid');\n            }\n            resetOutput();\n            return;\n        } else {\n            layOddsInput.classList.remove('invalid');\n        }\n\n        if (isNaN(backStake) || backStake \u003c= 0) {\n            resetOutput();\n            return;\n        }\n\n        const commissionRate = isNaN(commission) ? 0.05 : commission;\n\n        let layStake, liability, profitBack, profitLay, mainProfit, rating;\n\n        if (betType === 'qualifying') {\n            \n            layStake = (backStake * backOdds) / (layOdds - commissionRate);\n            liability = layStake * (layOdds - 1);\n\n            \n            profitBack = backStake * (backOdds - 1) - liability;\n\n            \n            profitLay = layStake * (1 - commissionRate) - backStake;\n\n            mainProfit = Math.min(profitBack, profitLay);\n            rating = ((Math.abs(mainProfit) / backStake) * 100).toFixed(2);\n\n            mainLabel.textContent = '资格损失';\n            profitBox.classList.remove('freebet');\n            profitBox.classList.add('qualifying');\n        } else {\n            \n            const freeBetType = freeBetTypeSelect.value;\n\n            if (freeBetType === 'snr') {\n                \n                layStake = (backStake * (backOdds - 1)) / (layOdds - commissionRate);\n                liability = layStake * (layOdds - 1);\n\n                \n                profitBack = backStake * (backOdds - 1) - liability;\n\n                \n                profitLay = layStake * (1 - commissionRate);\n\n            } else {\n                \n                layStake = (backStake * backOdds) / (layOdds - commissionRate);\n                liability = layStake * (layOdds - 1);\n\n                profitBack = backStake * (backOdds - 1) - liability;\n                profitLay = layStake * (1 - commissionRate);\n            }\n\n            mainProfit = Math.min(profitBack, profitLay);\n            rating = ((mainProfit / backStake) * 100).toFixed(2);\n\n            mainLabel.textContent = 'Guaranteed Profit';\n            profitBox.classList.remove('qualifying');\n            profitBox.classList.add('freebet');\n        }\n\n        \n        layStakeResult.textContent = '$' + layStake.toFixed(2);\n        liabilityResult.textContent = '$' + liability.toFixed(2);\n\n        profitBackEl.textContent = (profitBack \u003e= 0 ? '+$' : '-$') + Math.abs(profitBack).toFixed(2);\n        profitBackEl.className = 'matched__output-value ' + (profitBack \u003e= 0 ? 'positive' : 'negative');\n\n        profitLayEl.textContent = (profitLay \u003e= 0 ? '+$' : '-$') + Math.abs(profitLay).toFixed(2);\n        profitLayEl.className = 'matched__output-value ' + (profitLay \u003e= 0 ? 'positive' : 'negative');\n\n        mainResult.textContent = (mainProfit \u003e= 0 ? '+$' : '-$') + Math.abs(mainProfit).toFixed(2);\n        ratingValue.textContent = rating + '%';\n    }\n\n    function resetOutput() {\n        layStakeResult.textContent = '-';\n        liabilityResult.textContent = '-';\n        profitBackEl.textContent = '-';\n        profitBackEl.className = 'matched__output-value';\n        profitLayEl.textContent = '-';\n        profitLayEl.className = 'matched__output-value';\n        mainResult.textContent = '-';\n        ratingValue.textContent = '-';\n    }\n\n    function resetAll() {\n        backOddsInput.value = '';\n        layOddsInput.value = '';\n        backStakeInput.value = '';\n        commissionInput.value = '5';\n        backOddsInput.classList.remove('invalid');\n        layOddsInput.classList.remove('invalid');\n\n        typeTabs.forEach(tab =\u003e tab.classList.remove('active'));\n        typeTabs[0].classList.add('active');\n        betType = 'qualifying';\n        freeBetOptions.classList.remove('active');\n\n        mainLabel.textContent = '资格损失';\n        profitBox.classList.remove('freebet');\n        profitBox.classList.add('qualifying');\n\n        resetOutput();\n    }\n\n    \n    typeTabs.forEach(tab =\u003e {\n        tab.addEventListener('click', function() {\n            typeTabs.forEach(t =\u003e t.classList.remove('active'));\n            this.classList.add('active');\n            betType = this.dataset.type;\n\n            if (betType === 'freebet') {\n                freeBetOptions.classList.add('active');\n            } else {\n                freeBetOptions.classList.remove('active');\n            }\n            calculate();\n        });\n    });\n\n    backOddsInput.addEventListener('input', calculate);\n    layOddsInput.addEventListener('input', calculate);\n    backStakeInput.addEventListener('input', calculate);\n    commissionInput.addEventListener('input', calculate);\n    freeBetTypeSelect.addEventListener('change', calculate);\n\n    resetBtn.addEventListener('click', resetAll);\n})();\n\u003c/script\u003e","title":"匹配投注计算器 - 免费投注和对冲计算"},{"content":" 主队平均进球 客队平均进球 主胜 - 平局 - 客胜 - 大2.5球 - 小2.5球 - 双方进球 - 主 \\ 客012345 重置 ","permalink":"https://calculators-odds.com/zh/poisson-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"poisson_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e主队平均进球\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-home\" type=\"text\" placeholder=\"1.5\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e客队平均进球\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-away\" type=\"text\" placeholder=\"1.2\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e主胜\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-homewin\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e平局\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-draw\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e客胜\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-awaywin\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e大2.5球\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-over25\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e小2.5球\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-under25\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e双方进球\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-btts\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__table-wrap\"\u003e\n        \u003ctable class=\"calc-wrap__table js-scoretable\"\u003e\n            \u003cthead\u003e\u003ctr\u003e\u003cth\u003e主 \\ 客\u003c/th\u003e\u003cth\u003e0\u003c/th\u003e\u003cth\u003e1\u003c/th\u003e\u003cth\u003e2\u003c/th\u003e\u003cth\u003e3\u003c/th\u003e\u003cth\u003e4\u003c/th\u003e\u003cth\u003e5\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\n            \u003ctbody\u003e\u003c/tbody\u003e\n        \u003c/table\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('poisson_0');\n    var homeEl = root.querySelector('.js-home');\n    var awayEl = root.querySelector('.js-away');\n    var homeWinEl = root.querySelector('.js-homewin');\n    var drawEl = root.querySelector('.js-draw');\n    var awayWinEl = root.querySelector('.js-awaywin');\n    var over25El = root.querySelector('.js-over25');\n    var under25El = root.querySelector('.js-under25');\n    var bttsEl = root.querySelector('.js-btts');\n    var tableEl = root.querySelector('.js-scoretable tbody');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function poisson(lambda, k) {\n        return (Math.pow(lambda, k) * Math.exp(-lambda)) / factorial(k);\n    }\n    function factorial(n) {\n        if (n \u003c= 1) return 1;\n        var r = 1; for (var i = 2; i \u003c= n; i++) r *= i; return r;\n    }\n\n    function update() {\n        var homeLambda = parseFloat(homeEl.value);\n        var awayLambda = parseFloat(awayEl.value);\n        if (isNaN(homeLambda) || isNaN(awayLambda) || homeLambda \u003c= 0 || awayLambda \u003c= 0) {\n            homeWinEl.textContent='-'; drawEl.textContent='-'; awayWinEl.textContent='-';\n            over25El.textContent='-'; under25El.textContent='-'; bttsEl.textContent='-';\n            tableEl.innerHTML=''; return;\n        }\n\n        var homeProbs = [], awayProbs = [];\n        for (var i = 0; i \u003c= 5; i++) {\n            homeProbs.push(poisson(homeLambda, i));\n            awayProbs.push(poisson(awayLambda, i));\n        }\n\n        var homeWin = 0, draw = 0, awayWin = 0, under25 = 0, btts = 0;\n        var html = '';\n        for (var h = 0; h \u003c= 5; h++) {\n            html += '\u003ctr\u003e\u003ctd\u003e\u003cstrong\u003e' + h + '\u003c/strong\u003e\u003c/td\u003e';\n            for (var a = 0; a \u003c= 5; a++) {\n                var p = homeProbs[h] * awayProbs[a];\n                html += '\u003ctd\u003e' + (p * 100).toFixed(1) + '%\u003c/td\u003e';\n                if (h \u003e a) homeWin += p;\n                else if (h === a) draw += p;\n                else awayWin += p;\n                if (h + a \u003c= 2) under25 += p;\n                if (h \u003e 0 \u0026\u0026 a \u003e 0) btts += p;\n            }\n            html += '\u003c/tr\u003e';\n        }\n\n        homeWinEl.textContent = (homeWin * 100).toFixed(1) + '%';\n        drawEl.textContent = (draw * 100).toFixed(1) + '%';\n        awayWinEl.textContent = (awayWin * 100).toFixed(1) + '%';\n        under25El.textContent = (under25 * 100).toFixed(1) + '%';\n        over25El.textContent = ((1 - under25) * 100).toFixed(1) + '%';\n        bttsEl.textContent = (btts * 100).toFixed(1) + '%';\n        tableEl.innerHTML = html;\n    }\n\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        homeEl.value=''; awayEl.value='';\n        homeWinEl.textContent='-'; drawEl.textContent='-'; awayWinEl.textContent='-';\n        over25El.textContent='-'; under25El.textContent='-'; bttsEl.textContent='-';\n        tableEl.innerHTML='';\n    });\n})();\n\u003c/script\u003e","title":"泊松分布计算器 - 预测精确比分"},{"content":" 期望值计算器 步骤1：输入投注详情 赔率格式 小数 分数 美式 您将输入的赔率格式 赔率 小数: 2.50 | 分数: 3/2 | 美式: \u0026#43;150 胜率 (%) 您估计的真实获胜概率（1-99%） 投注金额 （可选） 留空以获取单位期望值 结果 期望值 - 请在上方输入数值 期望值百分比 - 优势 - 隐含概率 - 盈亏平衡概率 - 长期预测 10次投注： - 100次投注： - 1,000次投注： - EV = (概率 × 利润) - ((1 - 概率) × 投注额) 重置 ","permalink":"https://calculators-odds.com/zh/expected-value-calculator/","summary":"\u003cstyle\u003e\n    .ev {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .ev__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .ev__container {\n        width: 100%;\n        max-width: 600px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .ev__section {\n        background: #2d333b;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .ev__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .ev__row {\n        display: flex;\n        gap: 15px;\n        margin-bottom: 15px;\n    }\n\n    .ev__row:last-child {\n        margin-bottom: 0;\n    }\n\n    .ev__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n    }\n\n    .ev__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .ev__input, .ev__select {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .ev__input:focus, .ev__select:focus {\n        outline: none;\n        border-color: #4CAF50;\n    }\n\n    .ev__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .ev__select {\n        cursor: pointer;\n    }\n\n    .ev__select option {\n        background: #2d333b;\n        color: #e8e8e8;\n    }\n\n    .ev__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .ev__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .ev__result-box {\n        padding: 25px;\n        border-radius: 8px;\n        text-align: center;\n        margin-bottom: 20px;\n    }\n\n    .ev__result-box.positive {\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n    }\n\n    .ev__result-box.negative {\n        background: rgba(244, 67, 54, 0.15);\n        border: 2px solid #f44336;\n    }\n\n    .ev__result-box.neutral {\n        background: rgba(255, 152, 0, 0.15);\n        border: 2px solid #ff9800;\n    }\n\n    .ev__result-label {\n        font-size: 14px;\n        margin-bottom: 8px;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .ev__result-value {\n        font-size: 32px;\n        font-weight: bold;\n    }\n\n    .ev__result-box.positive .ev__result-value {\n        color: #4CAF50;\n    }\n\n    .ev__result-box.negative .ev__result-value {\n        color: #f44336;\n    }\n\n    .ev__result-box.neutral .ev__result-value {\n        color: #ff9800;\n    }\n\n    .ev__verdict {\n        font-size: 16px;\n        font-weight: bold;\n        margin-top: 10px;\n    }\n\n    .ev__output-grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .ev__output-item {\n        text-align: center;\n        padding: 15px;\n        background: rgba(255, 255, 255, 0.05);\n        border-radius: 6px;\n    }\n\n    .ev__output-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .ev__output-value {\n        font-size: 18px;\n        font-weight: bold;\n    }\n\n    .ev__output-value.positive {\n        color: #4CAF50;\n    }\n\n    .ev__output-value.negative {\n        color: #f44336;\n    }\n\n    .ev__projection {\n        margin-top: 20px;\n        padding: 15px;\n        background: rgba(33, 150, 243, 0.15);\n        border: 1px solid rgba(33, 150, 243, 0.3);\n        border-radius: 8px;\n    }\n\n    .ev__projection-title {\n        font-size: 14px;\n        font-weight: bold;\n        margin-bottom: 10px;\n        text-align: center;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .ev__projection-row {\n        display: flex;\n        justify-content: space-between;\n        padding: 8px 0;\n        border-bottom: 1px solid rgba(255,255,255,0.05);\n        font-size: 13px;\n    }\n\n    .ev__projection-row:last-child {\n        border-bottom: none;\n    }\n\n    .ev__projection-row span:first-child {\n        color: rgba(232, 232, 232, 0.6);\n    }\n\n    .ev__projection-row span:last-child {\n        font-weight: bold;\n    }\n\n    .ev__formula {\n        margin-top: 15px;\n        padding: 12px;\n        background: rgba(0, 0, 0, 0.2);\n        border-radius: 4px;\n        font-size: 12px;\n        text-align: center;\n        font-family: monospace;\n        color: rgba(232, 232, 232, 0.6);\n    }\n\n    .ev__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n        align-self: center;\n    }\n\n    .ev__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 600px) {\n        .ev__row {\n            flex-direction: column;\n        }\n        .ev__output-grid {\n            grid-template-columns: 1fr;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"ev\"\u003e\n    \u003cdiv class=\"ev__title\"\u003e期望值计算器\u003c/div\u003e\n\n    \u003cdiv class=\"ev__container\"\u003e\n        \n        \u003cdiv class=\"ev__section\"\u003e\n            \u003cdiv class=\"ev__section-title\"\u003e步骤1：输入投注详情\u003c/div\u003e\n            \u003cdiv class=\"ev__row\"\u003e\n                \u003cdiv class=\"ev__input-group\"\u003e\n                    \u003clabel class=\"ev__label\"\u003e赔率格式\u003c/label\u003e\n                    \u003cselect class=\"ev__select ev__odds-type\"\u003e\n                        \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n                        \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n                        \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"ev__hint\"\u003e您将输入的赔率格式\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"ev__input-group\"\u003e\n                    \u003clabel class=\"ev__label\"\u003e赔率\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"ev__input ev__odds\" placeholder=\"2.50\" /\u003e\n                    \u003cspan class=\"ev__hint ev__odds-hint\" data-decimal=\"小数: 2.50 | 分数: 3/2 | 美式: \u0026#43;150\" data-fractional=\"小数: 2.50 | 分数: 3/2 | 美式: \u0026#43;150\" data-american=\"小数: 2.50 | 分数: 3/2 | 美式: \u0026#43;150\"\u003e小数: 2.50 | 分数: 3/2 | 美式: \u0026#43;150\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"ev__row\"\u003e\n                \u003cdiv class=\"ev__input-group\"\u003e\n                    \u003clabel class=\"ev__label\"\u003e胜率 (%)\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"ev__input ev__probability\" placeholder=\"45\" min=\"0\" max=\"100\" step=\"0.1\" /\u003e\n                    \u003cspan class=\"ev__hint\"\u003e您估计的真实获胜概率（1-99%）\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"ev__input-group\"\u003e\n                    \u003clabel class=\"ev__label\"\u003e投注金额 （可选）\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"ev__input ev__stake\" placeholder=\"10.00\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"ev__hint\"\u003e留空以获取单位期望值\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"ev__section\"\u003e\n            \u003cdiv class=\"ev__output-title\"\u003e结果\u003c/div\u003e\n            \u003cdiv class=\"ev__result-box neutral\"\u003e\n                \u003cdiv class=\"ev__result-label\"\u003e期望值\u003c/div\u003e\n                \u003cdiv class=\"ev__result-value ev__ev-value\"\u003e-\u003c/div\u003e\n                \u003cdiv class=\"ev__verdict ev__verdict-text\"\u003e请在上方输入数值\u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"ev__output-grid\"\u003e\n                \u003cdiv class=\"ev__output-item\"\u003e\n                    \u003cdiv class=\"ev__output-label\"\u003e期望值百分比\u003c/div\u003e\n                    \u003cdiv class=\"ev__output-value ev__ev-percent\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"ev__output-item\"\u003e\n                    \u003cdiv class=\"ev__output-label\"\u003e优势\u003c/div\u003e\n                    \u003cdiv class=\"ev__output-value ev__edge\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"ev__output-item\"\u003e\n                    \u003cdiv class=\"ev__output-label\"\u003e隐含概率\u003c/div\u003e\n                    \u003cdiv class=\"ev__output-value ev__implied\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"ev__output-item\"\u003e\n                    \u003cdiv class=\"ev__output-label\"\u003e盈亏平衡概率\u003c/div\u003e\n                    \u003cdiv class=\"ev__output-value ev__breakeven\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"ev__projection\"\u003e\n                \u003cdiv class=\"ev__projection-title\"\u003e长期预测\u003c/div\u003e\n                \u003cdiv class=\"ev__projection-row\"\u003e\n                    \u003cspan\u003e10次投注：\u003c/span\u003e\n                    \u003cspan class=\"ev__proj-10\"\u003e-\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"ev__projection-row\"\u003e\n                    \u003cspan\u003e100次投注：\u003c/span\u003e\n                    \u003cspan class=\"ev__proj-100\"\u003e-\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"ev__projection-row\"\u003e\n                    \u003cspan\u003e1,000次投注：\u003c/span\u003e\n                    \u003cspan class=\"ev__proj-1000\"\u003e-\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"ev__formula\"\u003e\n                EV = (概率 × 利润) - ((1 - 概率) × 投注额)\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \u003cbutton class=\"ev__reset\" type=\"button\"\u003e重置\u003c/button\u003e\n    \u003c/div\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const oddsTypeSelect = container.querySelector('.ev__odds-type');\n    const oddsInput = container.querySelector('.ev__odds');\n    const oddsHint = container.querySelector('.ev__odds-hint');\n    const probabilityInput = container.querySelector('.ev__probability');\n    const stakeInput = container.querySelector('.ev__stake');\n    const resetBtn = container.querySelector('.ev__reset');\n\n    const evValue = container.querySelector('.ev__ev-value');\n    const verdictText = container.querySelector('.ev__verdict-text');\n    const resultBox = container.querySelector('.ev__result-box');\n    const evPercent = container.querySelector('.ev__ev-percent');\n    const edgeEl = container.querySelector('.ev__edge');\n    const impliedEl = container.querySelector('.ev__implied');\n    const breakevenEl = container.querySelector('.ev__breakeven');\n    const proj10 = container.querySelector('.ev__proj-10');\n    const proj100 = container.querySelector('.ev__proj-100');\n    const proj1000 = container.querySelector('.ev__proj-1000');\n\n    const placeholders = {\n        'Decimal': '2.50',\n        'Fractional': '3/2',\n        'American': '+150'\n    };\n\n    const hints = {\n        'Decimal': '输入小数赔率（例如：2.50, 1.80, 3.00）',\n        'Fractional': '输入分数赔率（例如：3\\/2, 5\\/1, 11\\/4）',\n        'American': '输入美式赔率（例如：\\u002b150, -110, \\u002b200）'\n    };\n\n    \n    function validateFractionalCoefficient(coefficient) {\n        return /^\\d+\\/\\d+$/.test(coefficient);\n    }\n\n    function validateDecimalCoefficient(coefficient) {\n        return /^\\d+(\\.\\d+)?$/.test(coefficient) \u0026\u0026 parseFloat(coefficient) \u003e 1;\n    }\n\n    function validateAmericanCoefficient(coefficient) {\n        return /^[-+]?\\d+$/.test(coefficient);\n    }\n\n    \n    function convertFractionToDecimal(fraction) {\n        const parts = fraction.split('/');\n        if (parts.length !== 2) return null;\n        const numerator = parseFloat(parts[0]);\n        const denominator = parseFloat(parts[1]);\n        if (isNaN(numerator) || isNaN(denominator) || denominator === 0) return null;\n        return (numerator / denominator) + 1;\n    }\n\n    function convertAmericanToDecimal(americanOdds) {\n        const oddsValue = parseFloat(americanOdds);\n        if (isNaN(oddsValue)) return null;\n        if (oddsValue \u003e 0) {\n            return (oddsValue / 100) + 1;\n        } else if (oddsValue \u003c 0) {\n            return (100 / Math.abs(oddsValue)) + 1;\n        }\n        return 2;\n    }\n\n    function getDecimalOdds() {\n        const type = oddsTypeSelect.value;\n        const odds = oddsInput.value.trim();\n\n        if (type === 'Fractional') {\n            if (!validateFractionalCoefficient(odds)) return null;\n            return convertFractionToDecimal(odds);\n        } else if (type === 'Decimal') {\n            if (!validateDecimalCoefficient(odds)) return null;\n            return parseFloat(odds);\n        } else if (type === 'American') {\n            if (!validateAmericanCoefficient(odds)) return null;\n            return convertAmericanToDecimal(odds);\n        }\n        return null;\n    }\n\n    function calculate() {\n        const decimalOdds = getDecimalOdds();\n        const winProb = parseFloat(probabilityInput.value) / 100;\n        const stake = parseFloat(stakeInput.value) || 1; \n\n        \n        if (decimalOdds === null || decimalOdds \u003c= 1) {\n            if (oddsInput.value.trim() !== '') {\n                oddsInput.classList.add('invalid');\n            }\n            resetOutput();\n            return;\n        } else {\n            oddsInput.classList.remove('invalid');\n        }\n\n        \n        if (isNaN(winProb) || winProb \u003c= 0 || winProb \u003e= 1) {\n            if (probabilityInput.value.trim() !== '') {\n                probabilityInput.classList.add('invalid');\n            }\n            resetOutput();\n            return;\n        } else {\n            probabilityInput.classList.remove('invalid');\n        }\n\n        \n        const profit = (decimalOdds - 1) * stake;\n        const ev = (winProb * profit) - ((1 - winProb) * stake);\n        const evPerUnit = (winProb * decimalOdds) - 1;\n        const evPct = evPerUnit * 100;\n\n        const impliedProb = 1 / decimalOdds;\n        const edge = winProb - impliedProb;\n\n        \n        if (stakeInput.value) {\n            evValue.textContent = (ev \u003e= 0 ? '+$' : '-$') + Math.abs(ev).toFixed(2);\n        } else {\n            evValue.textContent = (evPerUnit \u003e= 0 ? '+' : '') + evPerUnit.toFixed(4);\n        }\n\n        \n        resultBox.classList.remove('positive', 'negative', 'neutral');\n        if (ev \u003e 0.001) {\n            resultBox.classList.add('positive');\n            verdictText.textContent = '正期望值 (\\u002bEV)';\n        } else if (ev \u003c -0.001) {\n            resultBox.classList.add('negative');\n            verdictText.textContent = '负期望值 (-EV)';\n        } else {\n            resultBox.classList.add('neutral');\n            verdictText.textContent = '盈亏平衡';\n        }\n\n        \n        evPercent.textContent = (evPct \u003e= 0 ? '+' : '') + evPct.toFixed(2) + '%';\n        evPercent.className = 'ev__output-value ' + (evPct \u003e= 0 ? 'positive' : 'negative');\n\n        edgeEl.textContent = (edge \u003e= 0 ? '+' : '') + (edge * 100).toFixed(2) + '%';\n        edgeEl.className = 'ev__output-value ' + (edge \u003e= 0 ? 'positive' : 'negative');\n\n        impliedEl.textContent = (impliedProb * 100).toFixed(2) + '%';\n        breakevenEl.textContent = (impliedProb * 100).toFixed(2) + '%';\n\n        \n        proj10.textContent = (ev \u003e= 0 ? '+$' : '-$') + Math.abs(ev * 10).toFixed(2);\n        proj100.textContent = (ev \u003e= 0 ? '+$' : '-$') + Math.abs(ev * 100).toFixed(2);\n        proj1000.textContent = (ev \u003e= 0 ? '+$' : '-$') + Math.abs(ev * 1000).toFixed(2);\n    }\n\n    function resetOutput() {\n        evValue.textContent = '-';\n        verdictText.textContent = '请在上方输入数值';\n        resultBox.classList.remove('positive', 'negative');\n        resultBox.classList.add('neutral');\n\n        evPercent.textContent = '-';\n        evPercent.className = 'ev__output-value';\n        edgeEl.textContent = '-';\n        edgeEl.className = 'ev__output-value';\n        impliedEl.textContent = '-';\n        breakevenEl.textContent = '-';\n\n        proj10.textContent = '-';\n        proj100.textContent = '-';\n        proj1000.textContent = '-';\n    }\n\n    function resetAll() {\n        oddsInput.value = '';\n        probabilityInput.value = '';\n        stakeInput.value = '';\n        oddsInput.classList.remove('invalid');\n        probabilityInput.classList.remove('invalid');\n        oddsTypeSelect.selectedIndex = 0;\n        updatePlaceholder();\n        resetOutput();\n    }\n\n    \n    function updatePlaceholder() {\n        const type = oddsTypeSelect.value;\n        oddsInput.placeholder = placeholders[type];\n        oddsHint.textContent = hints[type];\n    }\n\n    \n    oddsTypeSelect.addEventListener('change', function() {\n        updatePlaceholder();\n        calculate();\n    });\n\n    oddsInput.addEventListener('input', calculate);\n    probabilityInput.addEventListener('input', calculate);\n    stakeInput.addEventListener('input', calculate);\n    resetBtn.addEventListener('click', resetAll);\n\n    \n    updatePlaceholder();\n})();\n\u003c/script\u003e","title":"期望值计算器 - 体育博彩EV计算"},{"content":" 让分 热门独赢 - 冷门独赢 - 热门隐含概率 - 冷门隐含概率 - 独赢 预估让分 - 重置 ","permalink":"https://calculators-odds.com/zh/spread-moneyline-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"spreadml_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e让分\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-spread\" type=\"text\" placeholder=\"-3.5\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e热门独赢\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-favml\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e冷门独赢\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-dogml\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e热门隐含概率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-favprob\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e冷门隐含概率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-dogprob\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__separator\"\u003e\u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e独赢\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-ml\" type=\"text\" placeholder=\"-150\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e预估让分\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-estspr\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('spreadml_0');\n    var spreadEl = root.querySelector('.js-spread');\n    var favMlEl = root.querySelector('.js-favml');\n    var dogMlEl = root.querySelector('.js-dogml');\n    var favProbEl = root.querySelector('.js-favprob');\n    var dogProbEl = root.querySelector('.js-dogprob');\n    var mlEl = root.querySelector('.js-ml');\n    var estSprEl = root.querySelector('.js-estspr');\n    var resetBtn = root.querySelector('.js-reset');\n\n    \n    \n    function spreadToMoneyline(spread) {\n        var absSpread = Math.abs(spread);\n        \n        var prob = 0.5 + (absSpread * 0.03); \n        if (prob \u003e= 0.99) prob = 0.99;\n        var favML, dogML;\n        if (prob \u003e= 0.5) {\n            favML = Math.round(-100 * prob / (1 - prob));\n            dogML = Math.round(100 * (1 - prob) / prob);\n        } else {\n            favML = Math.round(100 * (1 - prob) / prob);\n            dogML = Math.round(-100 * prob / (1 - prob));\n        }\n        return { favML: favML, dogML: dogML \u003e 0 ? '+' + dogML : '' + dogML, favProb: prob, dogProb: 1 - prob, favMLstr: favML \u003c 0 ? '' + favML : '+' + favML };\n    }\n\n    function moneylineToSpread(ml) {\n        var prob;\n        if (ml \u003c 0) prob = Math.abs(ml) / (Math.abs(ml) + 100);\n        else prob = 100 / (ml + 100);\n        var spread = (prob - 0.5) / 0.03;\n        return spread;\n    }\n\n    function updateSpread() {\n        var spread = parseFloat(spreadEl.value);\n        if (isNaN(spread)) {\n            favMlEl.textContent='-'; dogMlEl.textContent='-'; favProbEl.textContent='-'; dogProbEl.textContent='-'; return;\n        }\n        var result = spreadToMoneyline(spread);\n        favMlEl.textContent = result.favMLstr;\n        dogMlEl.textContent = result.dogML;\n        favProbEl.textContent = (result.favProb * 100).toFixed(1) + '%';\n        dogProbEl.textContent = (result.dogProb * 100).toFixed(1) + '%';\n    }\n\n    function updateML() {\n        var ml = parseInt(mlEl.value);\n        if (isNaN(ml) || ml === 0) { estSprEl.textContent='-'; return; }\n        var spread = moneylineToSpread(ml);\n        var sign = spread \u003e= 0 ? '+' : '';\n        estSprEl.textContent = sign + spread.toFixed(1);\n    }\n\n    spreadEl.addEventListener('input', updateSpread);\n    mlEl.addEventListener('input', updateML);\n    resetBtn.addEventListener('click', function() {\n        spreadEl.value=''; mlEl.value='';\n        favMlEl.textContent='-'; dogMlEl.textContent='-'; favProbEl.textContent='-'; dogProbEl.textContent='-'; estSprEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"让分转美式赔率计算器 - NFL和NBA让分转换"},{"content":" 三连胜类型 正序三连胜 组合三连胜 第一名赔率 第二名赔率 第三名赔率 投注额 投注数量 1 总投注 - 预估派息 - 派彩 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/tricast-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"tricast_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e三连胜类型\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-type\"\u003e\n            \u003coption value=\"straight\"\u003e正序三连胜\u003c/option\u003e\n            \u003coption value=\"combination\"\u003e组合三连胜\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e第一名赔率\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds1\" type=\"text\" placeholder=\"5.00\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e第二名赔率\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds2\" type=\"text\" placeholder=\"8.00\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e第三名赔率\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds3\" type=\"text\" placeholder=\"12.00\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e投注额\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"1\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投注数量\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-numbets\"\u003e1\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e总投注\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e预估派息\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-dividend\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('tricast_0');\n    var typeEl = root.querySelector('.js-type');\n    var odds1El = root.querySelector('.js-odds1');\n    var odds2El = root.querySelector('.js-odds2');\n    var odds3El = root.querySelector('.js-odds3');\n    var stakeEl = root.querySelector('.js-stake');\n    var numBetsEl = root.querySelector('.js-numbets');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var dividendEl = root.querySelector('.js-dividend');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var o1 = parseFloat(odds1El.value);\n        var o2 = parseFloat(odds2El.value);\n        var o3 = parseFloat(odds3El.value);\n        var stake = parseFloat(stakeEl.value);\n        var isCombination = typeEl.value === 'combination';\n        var numBets = isCombination ? 6 : 1;\n        numBetsEl.textContent = numBets;\n\n        if (isNaN(o1) || isNaN(o2) || isNaN(o3) || o1 \u003c= 1 || o2 \u003c= 1 || o3 \u003c= 1) {\n            totalStakeEl.textContent = '-'; dividendEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return;\n        }\n        if (!stake || stake \u003c= 0) {\n            totalStakeEl.textContent = '-'; dividendEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return;\n        }\n\n        \n        var dividend = o1 * o2 * o3;\n        var totalStake = stake * numBets;\n        var payout = dividend * stake;\n\n        totalStakeEl.textContent = formatNumber(totalStake);\n        dividendEl.textContent = formatNumber(dividend);\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(payout - totalStake);\n    }\n\n    typeEl.addEventListener('change', update);\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        odds1El.value=''; odds2El.value=''; odds3El.value=''; stakeEl.value='';\n        typeEl.selectedIndex=0; numBetsEl.textContent='1';\n        totalStakeEl.textContent='-'; dividendEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"三连投注计算器 - 计算精确名次回报"},{"content":" 赔率格式 小数 分数 美式 选项 1 选项 2 选项 3 投注额 综合赔率 - 派彩 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/treble-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"treble_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e投注额\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e综合赔率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-combined\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const root = document.getElementById('treble_0');\n    const formatEl = root.querySelector('.js-format');\n    const stakeEl = root.querySelector('.js-stake');\n    const combinedEl = root.querySelector('.js-combined');\n    const payoutEl = root.querySelector('.js-payout');\n    const profitEl = root.querySelector('.js-profit');\n    const resetBtn = root.querySelector('.js-reset');\n\n    function getOddsInputs() { return root.querySelectorAll('.js-odds'); }\n\n    function update() {\n        const format = formatEl.value;\n        const oddsInputs = getOddsInputs();\n        let combined = 1, allValid = true;\n\n        oddsInputs.forEach(function(input) {\n            const d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); }\n            if (d) combined *= d; else allValid = false;\n        });\n\n        const stake = parseFloat(stakeEl.value);\n        if (!allValid) { combinedEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n\n        combinedEl.textContent = combined.toFixed(2);\n        if (!stake || stake \u003c= 0) { payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n\n        const payout = combined * stake;\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(payout - stake);\n    }\n\n    formatEl.addEventListener('change', function() {\n        getOddsInputs().forEach(i =\u003e i.placeholder = getOddsPlaceholder(formatEl.value));\n        update();\n    });\n    root.addEventListener('input', update);\n\n    resetBtn.addEventListener('click', function() {\n        getOddsInputs().forEach(i =\u003e { i.value = ''; i.classList.remove('invalid'); });\n        stakeEl.value = ''; formatEl.selectedIndex = 0;\n        combinedEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-';\n    });\n})();\n\u003c/script\u003e","title":"三式投注计算器 - 3选项投注回报"},{"content":" 总投注 总回报 投注次数 净利润 - 投资回报率 % - 平均投注 - 每注利润 - 重置 ","permalink":"https://calculators-odds.com/zh/roi-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"roi_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e总投注\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-wagered\" type=\"text\" placeholder=\"1000\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e总回报\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-returned\" type=\"text\" placeholder=\"1100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e投注次数\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-numbets\" type=\"text\" placeholder=\"50\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e净利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投资回报率 %\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-roi\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e平均投注\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-avgstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e每注利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-perbet\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('roi_0');\n    var wageredEl = root.querySelector('.js-wagered');\n    var returnedEl = root.querySelector('.js-returned');\n    var numBetsEl = root.querySelector('.js-numbets');\n    var profitEl = root.querySelector('.js-profit');\n    var roiEl = root.querySelector('.js-roi');\n    var avgStakeEl = root.querySelector('.js-avgstake');\n    var perBetEl = root.querySelector('.js-perbet');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var wagered = parseFloat(wageredEl.value);\n        var returned = parseFloat(returnedEl.value);\n        var numBets = parseInt(numBetsEl.value);\n\n        if (isNaN(wagered) || wagered \u003c= 0 || isNaN(returned) || returned \u003c 0) {\n            profitEl.textContent='-'; roiEl.textContent='-'; avgStakeEl.textContent='-'; perBetEl.textContent='-'; return;\n        }\n\n        var profit = returned - wagered;\n        var roi = (profit / wagered) * 100;\n\n        profitEl.textContent = formatNumber(profit);\n        roiEl.textContent = roi.toFixed(2) + '%';\n\n        if (!isNaN(numBets) \u0026\u0026 numBets \u003e 0) {\n            avgStakeEl.textContent = formatNumber(wagered / numBets);\n            perBetEl.textContent = formatNumber(profit / numBets);\n        } else {\n            avgStakeEl.textContent = '-';\n            perBetEl.textContent = '-';\n        }\n    }\n\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        wageredEl.value=''; returnedEl.value=''; numBetsEl.value='';\n        profitEl.textContent='-'; roiEl.textContent='-'; avgStakeEl.textContent='-'; perBetEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"投资回报率计算器 - 博彩ROI计算"},{"content":" 位置投注计算器 步骤1：输入投注详情 赔率格式 分数 小数 美式 您将输入的赔率格式 获胜赔率 分数: 10/1 | 小数: 11.00 | 美式: \u0026#43;1000 每部分投注额 每部分金额 - 总投注 = 2×此值 步骤2：名次条款和规则4 位置条款 1/4赔率 1/5赔率 1/3赔率 1/2赔率 名次投注的赢盘赔率比例 位置数 2个名次 3个名次 4个名次 5个名次 6个名次 付款名次数量 Rule 4 Deduction 否 是 非参赛者扣减 赢盘规则4 0p 5p 10p 15p 20p 25p 30p 35p 40p 45p 50p 55p 60p 65p 70p 75p 名次规则4 0p 5p 10p 15p 20p 25p 30p 35p 40p 45p 50p 55p 60p 65p 70p 75p 步骤3：选择结果 获胜 入围（非获胜） 落败 选择结果：赢 = 两项投注均支付，名次 = 仅支付名次，输 = 不支付 结果 总投注 - 名次赔率 - 获胜回报 - 位置回报 - 总回报 / 利润 - 双向投注 = 赢盘投注 \u0026#43; 名次投注（按赢盘赔率的一定比例）。总投注额翻倍。 重置 ","permalink":"https://calculators-odds.com/zh/each-way-calculator/","summary":"\u003cstyle\u003e\n    .eachway {\n        margin: 15px 0;\n        background-color: #1e2328;\n        border-radius: 8px;\n        padding: 25px;\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n        color: #e8e8e8;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    .eachway__title {\n        font-size: 24px;\n        font-weight: bold;\n        margin-bottom: 25px;\n        text-align: center;\n    }\n\n    .eachway__container {\n        width: 100%;\n        max-width: 700px;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .eachway__section {\n        background: #2d333b;\n        color: #e8e8e8;\n        padding: 20px;\n        border-radius: 8px;\n    }\n\n    .eachway__section-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .eachway__row {\n        display: flex;\n        gap: 15px;\n        margin-bottom: 15px;\n        flex-wrap: wrap;\n    }\n\n    .eachway__row:last-child {\n        margin-bottom: 0;\n    }\n\n    .eachway__input-group {\n        display: flex;\n        flex-direction: column;\n        flex: 1;\n        min-width: 120px;\n    }\n\n    .eachway__label {\n        font-size: 13px;\n        font-weight: bold;\n        margin-bottom: 6px;\n        color: #e8e8e8;\n    }\n\n    .eachway__input, .eachway__select {\n        background: rgba(0, 0, 0, 0.3);\n        color: #e8e8e8;\n        padding: 12px;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n        border-radius: 4px;\n        font-size: 16px;\n        width: 100%;\n        box-sizing: border-box;\n        transition: border-color 0.2s;\n    }\n\n    .eachway__input:focus, .eachway__select:focus {\n        outline: none;\n        border-color: #4CAF50;\n    }\n\n    .eachway__input::placeholder {\n        color: rgba(232, 232, 232, 0.4);\n    }\n\n    .eachway__select {\n        cursor: pointer;\n    }\n\n    .eachway__select option {\n        background: #2d333b;\n        color: #e8e8e8;\n    }\n\n    .eachway__hint {\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        margin-top: 4px;\n    }\n\n    .eachway__rule4-row {\n        display: flex;\n        align-items: flex-start;\n        gap: 15px;\n        flex-wrap: wrap;\n    }\n\n    .eachway__rule4-controls {\n        display: none;\n        gap: 15px;\n        flex: 1;\n    }\n\n    .eachway__rule4-controls.active {\n        display: flex;\n    }\n\n    .eachway__outcome-tabs {\n        display: flex;\n        gap: 8px;\n    }\n\n    .eachway__outcome-tab {\n        flex: 1;\n        padding: 14px;\n        border: 2px solid #4CAF50;\n        background: transparent;\n        color: #e8e8e8;\n        border-radius: 4px;\n        cursor: pointer;\n        font-size: 14px;\n        font-weight: bold;\n        transition: all 0.2s;\n    }\n\n    .eachway__outcome-tab:hover {\n        background: rgba(76, 175, 80, 0.2);\n    }\n\n    .eachway__outcome-tab.active {\n        background: #4CAF50;\n        color: #fff;\n    }\n\n    .eachway__outcome-tab.lose {\n        border-color: #f44336;\n    }\n\n    .eachway__outcome-tab.lose:hover {\n        background: rgba(244, 67, 54, 0.2);\n    }\n\n    .eachway__outcome-tab.lose.active {\n        background: #f44336;\n    }\n\n    .eachway__outcome-hint {\n        margin-top: 10px;\n        font-size: 11px;\n        color: rgba(232, 232, 232, 0.5);\n        text-align: center;\n    }\n\n    .eachway__output-title {\n        font-size: 16px;\n        font-weight: bold;\n        margin-bottom: 15px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #4CAF50;\n        color: #4CAF50;\n    }\n\n    .eachway__output-grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 15px;\n    }\n\n    .eachway__output-item {\n        text-align: center;\n        padding: 15px;\n        background: rgba(255, 255, 255, 0.05);\n        border-radius: 6px;\n    }\n\n    .eachway__output-item.full-width {\n        grid-column: span 2;\n    }\n\n    .eachway__output-label {\n        font-size: 12px;\n        color: rgba(232, 232, 232, 0.7);\n        margin-bottom: 8px;\n    }\n\n    .eachway__output-value {\n        font-size: 20px;\n        font-weight: bold;\n    }\n\n    .eachway__output-value.positive {\n        color: #4CAF50;\n    }\n\n    .eachway__output-value.negative {\n        color: #f44336;\n    }\n\n    .eachway__profit-box {\n        margin-top: 15px;\n        padding: 20px;\n        background: rgba(76, 175, 80, 0.15);\n        border: 2px solid #4CAF50;\n        border-radius: 8px;\n        text-align: center;\n    }\n\n    .eachway__profit-box.loss {\n        background: rgba(244, 67, 54, 0.15);\n        border-color: #f44336;\n    }\n\n    .eachway__profit-label {\n        font-size: 14px;\n        margin-bottom: 8px;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .eachway__profit-value {\n        font-size: 28px;\n        font-weight: bold;\n        color: #4CAF50;\n    }\n\n    .eachway__profit-box.loss .eachway__profit-value {\n        color: #f44336;\n    }\n\n    .eachway__info {\n        margin-top: 15px;\n        padding: 12px 15px;\n        background: rgba(33, 150, 243, 0.15);\n        border: 1px solid rgba(33, 150, 243, 0.3);\n        border-radius: 4px;\n        font-size: 13px;\n        text-align: center;\n        color: rgba(232, 232, 232, 0.8);\n    }\n\n    .eachway__reset {\n        margin-top: 20px;\n        padding: 12px 40px;\n        background-color: rgba(255, 255, 255, 0.1);\n        color: #e8e8e8;\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        font-size: 14px;\n        cursor: pointer;\n        transition: all 0.2s;\n        align-self: center;\n    }\n\n    .eachway__reset:hover {\n        background-color: rgba(255, 255, 255, 0.2);\n    }\n\n    .invalid {\n        border: 2px solid #f44336 !important;\n    }\n\n    @media (max-width: 600px) {\n        .eachway__row {\n            flex-direction: column;\n        }\n        .eachway__output-grid {\n            grid-template-columns: 1fr;\n        }\n        .eachway__output-item.full-width {\n            grid-column: span 1;\n        }\n        .eachway__outcome-tabs {\n            flex-direction: column;\n        }\n        .eachway__rule4-controls {\n            flex-direction: column;\n            width: 100%;\n        }\n    }\n\u003c/style\u003e\n\n\u003csection class=\"eachway\"\u003e\n    \u003cdiv class=\"eachway__title\"\u003e位置投注计算器\u003c/div\u003e\n\n    \u003cdiv class=\"eachway__container\"\u003e\n        \n        \u003cdiv class=\"eachway__section\"\u003e\n            \u003cdiv class=\"eachway__section-title\"\u003e步骤1：输入投注详情\u003c/div\u003e\n            \u003cdiv class=\"eachway__row\"\u003e\n                \u003cdiv class=\"eachway__input-group\"\u003e\n                    \u003clabel class=\"eachway__label\"\u003e赔率格式\u003c/label\u003e\n                    \u003cselect class=\"eachway__select eachway__odds-type\"\u003e\n                        \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n                        \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n                        \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"eachway__hint\"\u003e您将输入的赔率格式\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"eachway__input-group\"\u003e\n                    \u003clabel class=\"eachway__label\"\u003e获胜赔率\u003c/label\u003e\n                    \u003cinput type=\"text\" class=\"eachway__input eachway__odds\" placeholder=\"10/1\" /\u003e\n                    \u003cspan class=\"eachway__hint eachway__odds-hint\"\u003e分数: 10/1 | 小数: 11.00 | 美式: \u0026#43;1000\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"eachway__row\"\u003e\n                \u003cdiv class=\"eachway__input-group\"\u003e\n                    \u003clabel class=\"eachway__label\"\u003e每部分投注额\u003c/label\u003e\n                    \u003cinput type=\"number\" class=\"eachway__input eachway__stake\" placeholder=\"5.00\" min=\"0\" step=\"0.01\" /\u003e\n                    \u003cspan class=\"eachway__hint\"\u003e每部分金额 - 总投注 = 2×此值\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"eachway__section\"\u003e\n            \u003cdiv class=\"eachway__section-title\"\u003e步骤2：名次条款和规则4\u003c/div\u003e\n            \u003cdiv class=\"eachway__row\"\u003e\n                \u003cdiv class=\"eachway__input-group\"\u003e\n                    \u003clabel class=\"eachway__label\"\u003e位置条款\u003c/label\u003e\n                    \u003cselect class=\"eachway__select eachway__place-terms\"\u003e\n                        \u003coption value=\"0.25\"\u003e1/4赔率\u003c/option\u003e\n                        \u003coption value=\"0.2\"\u003e1/5赔率\u003c/option\u003e\n                        \u003coption value=\"0.333\"\u003e1/3赔率\u003c/option\u003e\n                        \u003coption value=\"0.5\"\u003e1/2赔率\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"eachway__hint\"\u003e名次投注的赢盘赔率比例\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"eachway__input-group\"\u003e\n                    \u003clabel class=\"eachway__label\"\u003e位置数\u003c/label\u003e\n                    \u003cselect class=\"eachway__select eachway__places\"\u003e\n                        \u003coption value=\"2\"\u003e2个名次\u003c/option\u003e\n                        \u003coption value=\"3\" selected\u003e3个名次\u003c/option\u003e\n                        \u003coption value=\"4\"\u003e4个名次\u003c/option\u003e\n                        \u003coption value=\"5\"\u003e5个名次\u003c/option\u003e\n                        \u003coption value=\"6\"\u003e6个名次\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"eachway__hint\"\u003e付款名次数量\u003c/span\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"eachway__row eachway__rule4-row\"\u003e\n                \u003cdiv class=\"eachway__input-group\" style=\"flex: 0 0 auto; min-width: 100px;\"\u003e\n                    \u003clabel class=\"eachway__label\"\u003eRule 4 Deduction\u003c/label\u003e\n                    \u003cselect class=\"eachway__select eachway__rule4-toggle\"\u003e\n                        \u003coption value=\"no\"\u003e否\u003c/option\u003e\n                        \u003coption value=\"yes\"\u003e是\u003c/option\u003e\n                    \u003c/select\u003e\n                    \u003cspan class=\"eachway__hint\"\u003e非参赛者扣减\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"eachway__rule4-controls\"\u003e\n                    \u003cdiv class=\"eachway__input-group\"\u003e\n                        \u003clabel class=\"eachway__label\"\u003e赢盘规则4\u003c/label\u003e\n                        \u003cselect class=\"eachway__select eachway__rule4-win\"\u003e\n                            \u003coption value=\"0\"\u003e0p\u003c/option\u003e\n                            \u003coption value=\"5\"\u003e5p\u003c/option\u003e\n                            \u003coption value=\"10\"\u003e10p\u003c/option\u003e\n                            \u003coption value=\"15\"\u003e15p\u003c/option\u003e\n                            \u003coption value=\"20\"\u003e20p\u003c/option\u003e\n                            \u003coption value=\"25\"\u003e25p\u003c/option\u003e\n                            \u003coption value=\"30\"\u003e30p\u003c/option\u003e\n                            \u003coption value=\"35\"\u003e35p\u003c/option\u003e\n                            \u003coption value=\"40\"\u003e40p\u003c/option\u003e\n                            \u003coption value=\"45\"\u003e45p\u003c/option\u003e\n                            \u003coption value=\"50\"\u003e50p\u003c/option\u003e\n                            \u003coption value=\"55\"\u003e55p\u003c/option\u003e\n                            \u003coption value=\"60\"\u003e60p\u003c/option\u003e\n                            \u003coption value=\"65\"\u003e65p\u003c/option\u003e\n                            \u003coption value=\"70\"\u003e70p\u003c/option\u003e\n                            \u003coption value=\"75\"\u003e75p\u003c/option\u003e\n                        \u003c/select\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"eachway__input-group\"\u003e\n                        \u003clabel class=\"eachway__label\"\u003e名次规则4\u003c/label\u003e\n                        \u003cselect class=\"eachway__select eachway__rule4-place\"\u003e\n                            \u003coption value=\"0\"\u003e0p\u003c/option\u003e\n                            \u003coption value=\"5\"\u003e5p\u003c/option\u003e\n                            \u003coption value=\"10\"\u003e10p\u003c/option\u003e\n                            \u003coption value=\"15\"\u003e15p\u003c/option\u003e\n                            \u003coption value=\"20\"\u003e20p\u003c/option\u003e\n                            \u003coption value=\"25\"\u003e25p\u003c/option\u003e\n                            \u003coption value=\"30\"\u003e30p\u003c/option\u003e\n                            \u003coption value=\"35\"\u003e35p\u003c/option\u003e\n                            \u003coption value=\"40\"\u003e40p\u003c/option\u003e\n                            \u003coption value=\"45\"\u003e45p\u003c/option\u003e\n                            \u003coption value=\"50\"\u003e50p\u003c/option\u003e\n                            \u003coption value=\"55\"\u003e55p\u003c/option\u003e\n                            \u003coption value=\"60\"\u003e60p\u003c/option\u003e\n                            \u003coption value=\"65\"\u003e65p\u003c/option\u003e\n                            \u003coption value=\"70\"\u003e70p\u003c/option\u003e\n                            \u003coption value=\"75\"\u003e75p\u003c/option\u003e\n                        \u003c/select\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"eachway__section\"\u003e\n            \u003cdiv class=\"eachway__section-title\"\u003e步骤3：选择结果\u003c/div\u003e\n            \u003cdiv class=\"eachway__outcome-tabs\"\u003e\n                \u003cbutton type=\"button\" class=\"eachway__outcome-tab active\" data-outcome=\"win\"\u003e获胜\u003c/button\u003e\n                \u003cbutton type=\"button\" class=\"eachway__outcome-tab\" data-outcome=\"place\"\u003e入围（非获胜）\u003c/button\u003e\n                \u003cbutton type=\"button\" class=\"eachway__outcome-tab lose\" data-outcome=\"lose\"\u003e落败\u003c/button\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"eachway__outcome-hint\"\u003e选择结果：赢 = 两项投注均支付，名次 = 仅支付名次，输 = 不支付\u003c/div\u003e\n        \u003c/div\u003e\n\n        \n        \u003cdiv class=\"eachway__section\"\u003e\n            \u003cdiv class=\"eachway__output-title\"\u003e结果\u003c/div\u003e\n            \u003cdiv class=\"eachway__output-grid\"\u003e\n                \u003cdiv class=\"eachway__output-item\"\u003e\n                    \u003cdiv class=\"eachway__output-label\"\u003e总投注\u003c/div\u003e\n                    \u003cdiv class=\"eachway__output-value eachway__total-stake\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"eachway__output-item\"\u003e\n                    \u003cdiv class=\"eachway__output-label\"\u003e名次赔率\u003c/div\u003e\n                    \u003cdiv class=\"eachway__output-value eachway__place-odds\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"eachway__output-item\"\u003e\n                    \u003cdiv class=\"eachway__output-label\"\u003e获胜回报\u003c/div\u003e\n                    \u003cdiv class=\"eachway__output-value eachway__win-return\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"eachway__output-item\"\u003e\n                    \u003cdiv class=\"eachway__output-label\"\u003e位置回报\u003c/div\u003e\n                    \u003cdiv class=\"eachway__output-value eachway__place-return\"\u003e-\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"eachway__profit-box\"\u003e\n                \u003cdiv class=\"eachway__profit-label\"\u003e总回报 / 利润\u003c/div\u003e\n                \u003cdiv class=\"eachway__profit-value\"\u003e-\u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"eachway__info\"\u003e\n                双向投注 = 赢盘投注 \u0026#43; 名次投注（按赢盘赔率的一定比例）。总投注额翻倍。\n            \u003c/div\u003e\n        \u003c/div\u003e\n\n        \u003cbutton class=\"eachway__reset\" type=\"button\"\u003e重置\u003c/button\u003e\n    \u003c/div\u003e\n\u003c/section\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n\n    const oddsTypeSelect = container.querySelector('.eachway__odds-type');\n    const oddsInput = container.querySelector('.eachway__odds');\n    const oddsHint = container.querySelector('.eachway__odds-hint');\n    const stakeInput = container.querySelector('.eachway__stake');\n    const placeTermsSelect = container.querySelector('.eachway__place-terms');\n    const placesSelect = container.querySelector('.eachway__places');\n\n    const rule4Toggle = container.querySelector('.eachway__rule4-toggle');\n    const rule4Controls = container.querySelector('.eachway__rule4-controls');\n    const rule4WinSelect = container.querySelector('.eachway__rule4-win');\n    const rule4PlaceSelect = container.querySelector('.eachway__rule4-place');\n\n    const outcomeTabs = container.querySelectorAll('.eachway__outcome-tab');\n    const resetBtn = container.querySelector('.eachway__reset');\n\n    const totalStakeEl = container.querySelector('.eachway__total-stake');\n    const placeOddsEl = container.querySelector('.eachway__place-odds');\n    const winReturnEl = container.querySelector('.eachway__win-return');\n    const placeReturnEl = container.querySelector('.eachway__place-return');\n    const profitBox = container.querySelector('.eachway__profit-box');\n    const profitValue = container.querySelector('.eachway__profit-value');\n\n    let selectedOutcome = 'win';\n\n    const placeholders = {\n        'Fractional': '10/1',\n        'Decimal': '11.00',\n        'American': '+1000'\n    };\n\n    const hints = {\n        'Fractional': '输入分数赔率（例如：10\\/1, 5\\/1, 3\\/1）',\n        'Decimal': '输入小数赔率（例如：11.00, 6.00, 4.00）',\n        'American': '输入美式赔率（例如：\\u002b1000, \\u002b500, \\u002b300）'\n    };\n\n    \n    function validateFractionalCoefficient(coefficient) {\n        return /^\\d+\\/\\d+$/.test(coefficient);\n    }\n\n    function validateDecimalCoefficient(coefficient) {\n        return /^\\d+(\\.\\d+)?$/.test(coefficient) \u0026\u0026 parseFloat(coefficient) \u003e 1;\n    }\n\n    function validateAmericanCoefficient(coefficient) {\n        return /^[-+]?\\d+$/.test(coefficient);\n    }\n\n    \n    function convertFractionToDecimal(fraction) {\n        const parts = fraction.split('/');\n        if (parts.length !== 2) return null;\n        const numerator = parseFloat(parts[0]);\n        const denominator = parseFloat(parts[1]);\n        if (isNaN(numerator) || isNaN(denominator) || denominator === 0) return null;\n        return (numerator / denominator) + 1;\n    }\n\n    function convertAmericanToDecimal(americanOdds) {\n        const oddsValue = parseFloat(americanOdds);\n        if (isNaN(oddsValue)) return null;\n        if (oddsValue \u003e 0) {\n            return (oddsValue / 100) + 1;\n        } else if (oddsValue \u003c 0) {\n            return (100 / Math.abs(oddsValue)) + 1;\n        }\n        return 2;\n    }\n\n    function getDecimalOdds() {\n        const type = oddsTypeSelect.value;\n        const odds = oddsInput.value.trim();\n\n        if (type === 'Fractional') {\n            if (!validateFractionalCoefficient(odds)) return null;\n            return convertFractionToDecimal(odds);\n        } else if (type === 'Decimal') {\n            if (!validateDecimalCoefficient(odds)) return null;\n            return parseFloat(odds);\n        } else if (type === 'American') {\n            if (!validateAmericanCoefficient(odds)) return null;\n            return convertAmericanToDecimal(odds);\n        }\n        return null;\n    }\n\n    function calculate() {\n        const decimalOdds = getDecimalOdds();\n        const stake = parseFloat(stakeInput.value);\n        const placeFraction = parseFloat(placeTermsSelect.value);\n\n        \n        if (decimalOdds === null || decimalOdds \u003c= 1) {\n            if (oddsInput.value.trim() !== '') {\n                oddsInput.classList.add('invalid');\n            }\n            resetOutput();\n            return;\n        } else {\n            oddsInput.classList.remove('invalid');\n        }\n\n        \n        if (isNaN(stake) || stake \u003c= 0) {\n            resetOutput();\n            return;\n        }\n\n        const totalStake = stake * 2; \n        const placeDecimalOdds = 1 + (decimalOdds - 1) * placeFraction;\n\n        \n        const showRule4 = rule4Toggle.value === 'yes';\n        const rule4Win = showRule4 ? parseFloat(rule4WinSelect.value) / 100 : 0;\n        const rule4Place = showRule4 ? parseFloat(rule4PlaceSelect.value) / 100 : 0;\n\n        \n        let winReturn = 0;\n        let placeReturn = 0;\n\n        if (selectedOutcome === 'win') {\n            \n            const winProfit = (decimalOdds - 1) * stake * (1 - rule4Win);\n            winReturn = stake + winProfit;\n\n            const placeProfit = (placeDecimalOdds - 1) * stake * (1 - rule4Place);\n            placeReturn = stake + placeProfit;\n        } else if (selectedOutcome === 'place') {\n            \n            winReturn = 0; \n\n            const placeProfit = (placeDecimalOdds - 1) * stake * (1 - rule4Place);\n            placeReturn = stake + placeProfit;\n        } else {\n            \n            winReturn = 0;\n            placeReturn = 0;\n        }\n\n        const totalReturn = winReturn + placeReturn;\n        const profit = totalReturn - totalStake;\n\n        \n        totalStakeEl.textContent = '$' + totalStake.toFixed(2);\n        placeOddsEl.textContent = placeDecimalOdds.toFixed(2);\n        winReturnEl.textContent = '$' + winReturn.toFixed(2);\n        placeReturnEl.textContent = '$' + placeReturn.toFixed(2);\n\n        profitValue.textContent = '$' + totalReturn.toFixed(2) + ' / ' + (profit \u003e= 0 ? '+$' : '-$') + Math.abs(profit).toFixed(2);\n\n        if (profit \u003e= 0) {\n            profitBox.classList.remove('loss');\n        } else {\n            profitBox.classList.add('loss');\n        }\n    }\n\n    function resetOutput() {\n        totalStakeEl.textContent = '-';\n        placeOddsEl.textContent = '-';\n        winReturnEl.textContent = '-';\n        placeReturnEl.textContent = '-';\n        profitValue.textContent = '-';\n        profitBox.classList.remove('loss');\n    }\n\n    function resetAll() {\n        oddsInput.value = '';\n        stakeInput.value = '';\n        oddsInput.classList.remove('invalid');\n        oddsTypeSelect.selectedIndex = 0;\n        placeTermsSelect.selectedIndex = 0;\n        placesSelect.selectedIndex = 1;\n        rule4Toggle.selectedIndex = 0;\n        rule4WinSelect.selectedIndex = 0;\n        rule4PlaceSelect.selectedIndex = 0;\n        rule4Controls.classList.remove('active');\n\n        outcomeTabs.forEach(tab =\u003e tab.classList.remove('active'));\n        outcomeTabs[0].classList.add('active');\n        selectedOutcome = 'win';\n\n        updatePlaceholder();\n        resetOutput();\n    }\n\n    \n    function updatePlaceholder() {\n        const type = oddsTypeSelect.value;\n        oddsInput.placeholder = placeholders[type];\n        oddsHint.textContent = hints[type];\n    }\n\n    \n    oddsTypeSelect.addEventListener('change', function() {\n        updatePlaceholder();\n        calculate();\n    });\n\n    oddsInput.addEventListener('input', calculate);\n    stakeInput.addEventListener('input', calculate);\n    placeTermsSelect.addEventListener('change', calculate);\n    placesSelect.addEventListener('change', calculate);\n\n    rule4Toggle.addEventListener('change', function() {\n        if (this.value === 'yes') {\n            rule4Controls.classList.add('active');\n        } else {\n            rule4Controls.classList.remove('active');\n        }\n        calculate();\n    });\n\n    rule4WinSelect.addEventListener('change', calculate);\n    rule4PlaceSelect.addEventListener('change', calculate);\n\n    outcomeTabs.forEach(tab =\u003e {\n        tab.addEventListener('click', function() {\n            outcomeTabs.forEach(t =\u003e t.classList.remove('active'));\n            this.classList.add('active');\n            selectedOutcome = this.dataset.outcome;\n            calculate();\n        });\n    });\n\n    resetBtn.addEventListener('click', resetAll);\n\n    \n    updatePlaceholder();\n})();\n\u003c/script\u003e","title":"位置投注计算器 - 赛马和高尔夫投注"},{"content":" 赛事类型 双向 (1-2) 三向 (1-X-2) 赔率格式 小数 分数 美式 总投注 结果 1 平局 (X) 结果 2 利润率 - 投注额 1 - 投注额 X - 投注额 2 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/surebet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"surebet_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赛事类型\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-eventtype\"\u003e\n            \u003coption value=\"2\"\u003e双向 (1-2)\u003c/option\u003e\n            \u003coption value=\"3\"\u003e三向 (1-X-2)\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e总投注\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-totalstake\" type=\"text\" placeholder=\"1000\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__grid calc-wrap__grid--3 js-oddsgrid\"\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e结果 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds1\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__row calc-wrap__row--hidden js-xrow\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e平局 (X)\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-oddsx\" type=\"text\" placeholder=\"3.50\" /\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e结果 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds2\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-margin\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item js-result-msg\" style=\"display:none\"\u003e\n            \u003cspan class=\"calc-wrap__result-value js-msg\"\u003e\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results js-stakes-output\" style=\"display:none\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投注额 1\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-s1\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item js-sx-item\" style=\"display:none\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投注额 X\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-sx\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投注额 2\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-s2\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('surebet_0');\n    var eventTypeEl = root.querySelector('.js-eventtype');\n    var formatEl = root.querySelector('.js-format');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var odds1El = root.querySelector('.js-odds1');\n    var oddsXEl = root.querySelector('.js-oddsx');\n    var odds2El = root.querySelector('.js-odds2');\n    var xRow = root.querySelector('.js-xrow');\n    var marginEl = root.querySelector('.js-margin');\n    var msgContainer = root.querySelector('.js-result-msg');\n    var msgEl = root.querySelector('.js-msg');\n    var stakesOutput = root.querySelector('.js-stakes-output');\n    var s1El = root.querySelector('.js-s1');\n    var sxEl = root.querySelector('.js-sx');\n    var sxItem = root.querySelector('.js-sx-item');\n    var s2El = root.querySelector('.js-s2');\n    var profitEl = root.querySelector('.js-profit');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var is3way = eventTypeEl.value === '3';\n        xRow.classList.toggle('calc-wrap__row--hidden', !is3way);\n        sxItem.style.display = is3way ? '' : 'none';\n\n        var d1 = convertToDecimal(odds1El.value.trim(), format);\n        var d2 = convertToDecimal(odds2El.value.trim(), format);\n        var dx = is3way ? convertToDecimal(oddsXEl.value.trim(), format) : null;\n\n        [odds1El, odds2El, oddsXEl].forEach(function(el) { el.classList.remove('invalid'); });\n        if (odds1El.value.trim() \u0026\u0026 !d1) odds1El.classList.add('invalid');\n        if (odds2El.value.trim() \u0026\u0026 !d2) odds2El.classList.add('invalid');\n        if (is3way \u0026\u0026 oddsXEl.value.trim() \u0026\u0026 !dx) oddsXEl.classList.add('invalid');\n\n        if (!d1 || !d2 || (is3way \u0026\u0026 !dx)) {\n            marginEl.textContent = '-'; msgContainer.style.display = 'none'; stakesOutput.style.display = 'none';\n            return;\n        }\n\n        var invertedSum = 1/d1 + 1/d2;\n        if (is3way) invertedSum += 1/dx;\n\n        var margin = (1 - invertedSum) * 100;\n        marginEl.textContent = margin.toFixed(2) + '%';\n\n        msgContainer.style.display = '';\n        if (margin \u003e 0) {\n            marginEl.style.color = '#4CAF50';\n            msgEl.textContent = '发现稳赢投注！保证盈利。';\n            msgEl.style.color = '#4CAF50';\n        } else {\n            marginEl.style.color = '#f44336';\n            msgEl.textContent = '无稳赢投注。这些赔率会导致亏损。';\n            msgEl.style.color = '#f44336';\n        }\n\n        var totalStake = parseFloat(totalStakeEl.value);\n        if (!totalStake || totalStake \u003c= 0) { stakesOutput.style.display = 'none'; return; }\n\n        stakesOutput.style.display = '';\n        var stake1 = (totalStake / invertedSum) * (1/d1);\n        var stake2 = (totalStake / invertedSum) * (1/d2);\n        s1El.textContent = formatNumber(stake1);\n        s2El.textContent = formatNumber(stake2);\n\n        if (is3way) {\n            var stakeX = (totalStake / invertedSum) * (1/dx);\n            sxEl.textContent = formatNumber(stakeX);\n        }\n\n        var payout = totalStake / invertedSum;\n        profitEl.textContent = formatNumber(payout - totalStake);\n    }\n\n    eventTypeEl.addEventListener('change', update);\n    formatEl.addEventListener('change', function() {\n        var ph = getOddsPlaceholder(formatEl.value);\n        [odds1El, odds2El, oddsXEl].forEach(function(el){el.placeholder=ph;});\n        update();\n    });\n    [odds1El, odds2El, oddsXEl, totalStakeEl].forEach(function(el){el.addEventListener('input', update);});\n\n    resetBtn.addEventListener('click', function() {\n        odds1El.value=''; odds2El.value=''; oddsXEl.value=''; totalStakeEl.value='';\n        formatEl.selectedIndex=0; eventTypeEl.selectedIndex=0;\n        [odds1El, odds2El, oddsXEl].forEach(function(el){el.classList.remove('invalid');});\n        marginEl.textContent='-'; msgContainer.style.display='none'; stakesOutput.style.display='none';\n    });\n})();\n\u003c/script\u003e","title":"稳赚投注计算器 - 计算保证盈利注额"},{"content":" 无水赔率计算器 步骤1：选择赔率格式 小数 分数 美式 步骤2：输入博彩公司赔率 结果 1 博彩公司赔率 隐含概率 — 公平概率 — 公平赔率（无水） — 结果 2 博彩公司赔率 隐含概率 — 公平概率 — 公平赔率（无水） — + 添加结果 输入小数赔率（如 2.50） 结果 总利润率 — 水钱 — 超过100% = 博彩公司利润率 重置 ","permalink":"https://calculators-odds.com/zh/no-vig-calculator/","summary":"\u003cstyle\u003e\n.novig {\n    margin: 15px 0;\n    background-color: #1e2328;\n    border-radius: 8px;\n    padding: 20px;\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n    color: #e8e8e8;\n}\n\n.novig__title {\n    font-size: 22px;\n    font-weight: bold;\n    text-align: center;\n    margin-bottom: 25px;\n    color: #e8e8e8;\n}\n\n.novig__section {\n    background: #2d333b;\n    border-radius: 6px;\n    padding: 15px;\n    margin-bottom: 15px;\n}\n\n.novig__section-title {\n    font-size: 14px;\n    font-weight: 600;\n    color: #4CAF50;\n    margin-bottom: 15px;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n}\n\n.novig__format-selector {\n    display: flex;\n    gap: 8px;\n    flex-wrap: wrap;\n}\n\n.novig__format-btn {\n    flex: 1;\n    min-width: 100px;\n    padding: 10px 15px;\n    border: 2px solid #4CAF50;\n    background: transparent;\n    color: #e8e8e8;\n    cursor: pointer;\n    border-radius: 4px;\n    font-size: 14px;\n    font-weight: 500;\n    transition: all 0.2s;\n}\n\n.novig__format-btn:hover {\n    background: rgba(76, 175, 80, 0.2);\n}\n\n.novig__format-btn.active {\n    background: #4CAF50;\n    color: #fff;\n}\n\n.novig__outcomes-list {\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n}\n\n.novig__outcome {\n    background: rgba(0, 0, 0, 0.2);\n    border-radius: 4px;\n    padding: 12px;\n}\n\n.novig__outcome-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    margin-bottom: 10px;\n}\n\n.novig__outcome-label {\n    font-weight: 600;\n    font-size: 14px;\n    color: #4CAF50;\n}\n\n.novig__outcome-remove {\n    padding: 4px 8px;\n    background: #f44336;\n    color: #fff;\n    border: none;\n    border-radius: 3px;\n    cursor: pointer;\n    font-size: 11px;\n    transition: background 0.2s;\n}\n\n.novig__outcome-remove:hover {\n    background: #d32f2f;\n}\n\n.novig__outcome-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr 1fr 1fr;\n    gap: 10px;\n    align-items: end;\n}\n\n.novig__field {\n    display: flex;\n    flex-direction: column;\n    gap: 4px;\n}\n\n.novig__field-label {\n    font-size: 10px;\n    color: rgba(232, 232, 232, 0.6);\n    text-transform: uppercase;\n}\n\n.novig__input {\n    width: 100%;\n    padding: 10px;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 4px;\n    font-size: 14px;\n    background: #2d333b;\n    color: #e8e8e8;\n    transition: border-color 0.2s;\n    box-sizing: border-box;\n}\n\n.novig__input:focus {\n    outline: none;\n    border-color: #4CAF50;\n}\n\n.novig__input::placeholder {\n    color: rgba(232, 232, 232, 0.4);\n}\n\n.novig__input.invalid {\n    border-color: #f44336;\n}\n\n.novig__value {\n    padding: 10px;\n    background: rgba(0, 0, 0, 0.3);\n    border-radius: 4px;\n    font-size: 14px;\n    font-weight: 600;\n    text-align: center;\n}\n\n.novig__value.implied {\n    color: rgba(232, 232, 232, 0.8);\n}\n\n.novig__value.fair-prob {\n    color: #4CAF50;\n}\n\n.novig__value.fair-odds {\n    color: #2196F3;\n}\n\n.novig__add-btn {\n    width: 100%;\n    padding: 10px;\n    margin-top: 10px;\n    background: transparent;\n    border: 2px dashed rgba(255, 255, 255, 0.3);\n    color: #e8e8e8;\n    border-radius: 4px;\n    cursor: pointer;\n    font-size: 14px;\n    transition: all 0.2s;\n}\n\n.novig__add-btn:hover {\n    border-color: #4CAF50;\n    color: #4CAF50;\n}\n\n.novig__hint {\n    font-size: 11px;\n    color: rgba(232, 232, 232, 0.5);\n    margin-top: 8px;\n}\n\n.novig__summary-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 15px;\n}\n\n.novig__summary-box {\n    background: rgba(0, 0, 0, 0.2);\n    padding: 15px;\n    border-radius: 4px;\n    text-align: center;\n}\n\n.novig__summary-label {\n    font-size: 11px;\n    color: rgba(232, 232, 232, 0.7);\n    text-transform: uppercase;\n    margin-bottom: 5px;\n}\n\n.novig__summary-value {\n    font-size: 24px;\n    font-weight: 700;\n    color: #e8e8e8;\n}\n\n.novig__summary-value.good {\n    color: #4CAF50;\n}\n\n.novig__summary-value.bad {\n    color: #f44336;\n}\n\n.novig__summary-value.warning {\n    color: #ff9800;\n}\n\n.novig__buttons {\n    display: flex;\n    justify-content: center;\n    margin-top: 15px;\n}\n\n.novig__btn {\n    padding: 10px 30px;\n    border: none;\n    border-radius: 4px;\n    font-size: 14px;\n    font-weight: 500;\n    cursor: pointer;\n    transition: all 0.2s;\n}\n\n.novig__btn--secondary {\n    background: #666;\n    color: #fff;\n}\n\n.novig__btn--secondary:hover {\n    background: #555;\n}\n\n@media (max-width: 600px) {\n    .novig__outcome-grid {\n        grid-template-columns: 1fr 1fr;\n    }\n\n    .novig__summary-grid {\n        grid-template-columns: 1fr;\n    }\n\n    .novig__format-btn {\n        min-width: 80px;\n    }\n}\n\u003c/style\u003e\n\n\u003cdiv class=\"novig\"\u003e\n    \u003cdiv class=\"novig__title\"\u003e无水赔率计算器\u003c/div\u003e\n\n    \u003cdiv class=\"novig__section\"\u003e\n        \u003cdiv class=\"novig__section-title\"\u003e步骤1：选择赔率格式\u003c/div\u003e\n        \u003cdiv class=\"novig__format-selector\"\u003e\n            \u003cbutton type=\"button\" class=\"novig__format-btn active\" data-type=\"decimal\"\u003e小数\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"novig__format-btn\" data-type=\"fractional\"\u003e分数\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"novig__format-btn\" data-type=\"american\"\u003e美式\u003c/button\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"novig__section\"\u003e\n        \u003cdiv class=\"novig__section-title\"\u003e步骤2：输入博彩公司赔率\u003c/div\u003e\n        \u003cdiv class=\"novig__outcomes-list\"\u003e\n            \u003cdiv class=\"novig__outcome\" data-index=\"0\"\u003e\n                \u003cdiv class=\"novig__outcome-header\"\u003e\n                    \u003cspan class=\"novig__outcome-label\"\u003e结果 1\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"novig__outcome-grid\"\u003e\n                    \u003cdiv class=\"novig__field\"\u003e\n                        \u003cspan class=\"novig__field-label\"\u003e博彩公司赔率\u003c/span\u003e\n                        \u003cinput type=\"text\" class=\"novig__input novig__odds-input\" data-index=\"0\" placeholder=\"2.50\"\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"novig__field\"\u003e\n                        \u003cspan class=\"novig__field-label\"\u003e隐含概率\u003c/span\u003e\n                        \u003cdiv class=\"novig__value implied\" data-index=\"0\"\u003e—\u003c/div\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"novig__field\"\u003e\n                        \u003cspan class=\"novig__field-label\"\u003e公平概率\u003c/span\u003e\n                        \u003cdiv class=\"novig__value fair-prob\" data-index=\"0\"\u003e—\u003c/div\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"novig__field\"\u003e\n                        \u003cspan class=\"novig__field-label\"\u003e公平赔率（无水）\u003c/span\u003e\n                        \u003cdiv class=\"novig__value fair-odds\" data-index=\"0\"\u003e—\u003c/div\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"novig__outcome\" data-index=\"1\"\u003e\n                \u003cdiv class=\"novig__outcome-header\"\u003e\n                    \u003cspan class=\"novig__outcome-label\"\u003e结果 2\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"novig__outcome-grid\"\u003e\n                    \u003cdiv class=\"novig__field\"\u003e\n                        \u003cspan class=\"novig__field-label\"\u003e博彩公司赔率\u003c/span\u003e\n                        \u003cinput type=\"text\" class=\"novig__input novig__odds-input\" data-index=\"1\" placeholder=\"2.50\"\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"novig__field\"\u003e\n                        \u003cspan class=\"novig__field-label\"\u003e隐含概率\u003c/span\u003e\n                        \u003cdiv class=\"novig__value implied\" data-index=\"1\"\u003e—\u003c/div\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"novig__field\"\u003e\n                        \u003cspan class=\"novig__field-label\"\u003e公平概率\u003c/span\u003e\n                        \u003cdiv class=\"novig__value fair-prob\" data-index=\"1\"\u003e—\u003c/div\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"novig__field\"\u003e\n                        \u003cspan class=\"novig__field-label\"\u003e公平赔率（无水）\u003c/span\u003e\n                        \u003cdiv class=\"novig__value fair-odds\" data-index=\"1\"\u003e—\u003c/div\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n        \u003cbutton type=\"button\" class=\"novig__add-btn\"\u003e+ 添加结果\u003c/button\u003e\n        \u003cdiv class=\"novig__hint novig__hint-format\"\u003e输入小数赔率（如 2.50）\u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"novig__section\"\u003e\n        \u003cdiv class=\"novig__section-title\"\u003e结果\u003c/div\u003e\n        \u003cdiv class=\"novig__summary-grid\"\u003e\n            \u003cdiv class=\"novig__summary-box\"\u003e\n                \u003cdiv class=\"novig__summary-label\"\u003e总利润率\u003c/div\u003e\n                \u003cdiv class=\"novig__summary-value\" id=\"novigTotalImplied\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"novig__summary-box\"\u003e\n                \u003cdiv class=\"novig__summary-label\"\u003e水钱\u003c/div\u003e\n                \u003cdiv class=\"novig__summary-value\" id=\"novigVig\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"novig__hint\"\u003e超过100% = 博彩公司利润率\u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"novig__buttons\"\u003e\n        \u003cbutton type=\"button\" class=\"novig__btn novig__btn--secondary\" id=\"novigReset\"\u003e重置\u003c/button\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n    let currentOddsType = 'decimal';\n    let outcomeCount = 2;\n    const maxOutcomes = 10;\n\n    const placeholders = {\n        decimal: '2.50',\n        fractional: '3\\/2',\n        american: '\\u002b150'\n    };\n\n    const hints = {\n        decimal: '输入小数赔率（如 2.50）',\n        fractional: '输入分数赔率（如 3\\/2）',\n        american: '输入美式赔率（如 \\u002b150 或 -200）'\n    };\n\n    const outcomeLabels = [\n        '结果 1',\n        '结果 2',\n        '结果 3（平局）',\n        'Outcome 4',\n        'Outcome 5',\n        'Outcome 6',\n        'Outcome 7',\n        'Outcome 8',\n        'Outcome 9',\n        'Outcome 10'\n    ];\n\n    function validateDecimal(value) {\n        return /^\\d+(\\.\\d+)?$/.test(value) \u0026\u0026 parseFloat(value) \u003e 1;\n    }\n\n    function validateFractional(value) {\n        return /^\\d+\\/\\d+$/.test(value);\n    }\n\n    function validateAmerican(value) {\n        const cleaned = value.replace(/^\\+/, '');\n        return /^-?\\d+$/.test(cleaned) \u0026\u0026 (Math.abs(parseInt(cleaned)) \u003e= 100);\n    }\n\n    function fractionalToDecimal(fraction) {\n        const parts = fraction.split('/');\n        return (parseFloat(parts[0]) / parseFloat(parts[1])) + 1;\n    }\n\n    function americanToDecimal(american) {\n        const value = parseInt(american.replace(/^\\+/, ''));\n        return value \u003e 0 ? (value / 100) + 1 : (100 / Math.abs(value)) + 1;\n    }\n\n    function decimalToFractional(decimal) {\n        const profit = decimal - 1;\n        const gcd = (a, b) =\u003e b ? gcd(b, a % b) : a;\n        const precision = 100;\n        const numerator = Math.round(profit * precision);\n        const denominator = precision;\n        const divisor = gcd(numerator, denominator);\n        return `${numerator / divisor}/${denominator / divisor}`;\n    }\n\n    function decimalToAmerican(decimal) {\n        if (decimal \u003e= 2) {\n            return '+' + Math.round((decimal - 1) * 100);\n        }\n        return Math.round(-100 / (decimal - 1)).toString();\n    }\n\n    function getDecimalOdds(value) {\n        if (!value) return null;\n\n        if (currentOddsType === 'decimal') {\n            return validateDecimal(value) ? parseFloat(value) : null;\n        } else if (currentOddsType === 'fractional') {\n            return validateFractional(value) ? fractionalToDecimal(value) : null;\n        } else if (currentOddsType === 'american') {\n            return validateAmerican(value) ? americanToDecimal(value) : null;\n        }\n        return null;\n    }\n\n    function formatOdds(decimalOdds) {\n        if (currentOddsType === 'decimal') {\n            return decimalOdds.toFixed(2);\n        } else if (currentOddsType === 'fractional') {\n            return decimalToFractional(decimalOdds);\n        } else if (currentOddsType === 'american') {\n            return decimalToAmerican(decimalOdds);\n        }\n        return decimalOdds.toFixed(2);\n    }\n\n    function updatePlaceholders() {\n        container.querySelectorAll('.novig__odds-input').forEach(input =\u003e {\n            input.placeholder = placeholders[currentOddsType];\n        });\n\n        const hintEl = container.querySelector('.novig__hint-format');\n        if (hintEl) {\n            hintEl.textContent = hints[currentOddsType];\n        }\n    }\n\n    function addOutcome() {\n        if (outcomeCount \u003e= maxOutcomes) return;\n\n        const outcomesList = container.querySelector('.novig__outcomes-list');\n\n        const newOutcome = document.createElement('div');\n        newOutcome.className = 'novig__outcome';\n        newOutcome.dataset.index = outcomeCount;\n        newOutcome.innerHTML = `\n            \u003cdiv class=\"novig__outcome-header\"\u003e\n                \u003cspan class=\"novig__outcome-label\"\u003e${outcomeLabels[outcomeCount] || 'Outcome ' + (outcomeCount + 1)}\u003c/span\u003e\n                \u003cbutton type=\"button\" class=\"novig__outcome-remove\"\u003e✕\u003c/button\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"novig__outcome-grid\"\u003e\n                \u003cdiv class=\"novig__field\"\u003e\n                    \u003cspan class=\"novig__field-label\"\u003e博彩公司赔率\u003c/span\u003e\n                    \u003cinput type=\"text\" class=\"novig__input novig__odds-input\" data-index=\"${outcomeCount}\" placeholder=\"${placeholders[currentOddsType]}\"\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"novig__field\"\u003e\n                    \u003cspan class=\"novig__field-label\"\u003e隐含概率\u003c/span\u003e\n                    \u003cdiv class=\"novig__value implied\" data-index=\"${outcomeCount}\"\u003e—\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"novig__field\"\u003e\n                    \u003cspan class=\"novig__field-label\"\u003e公平概率\u003c/span\u003e\n                    \u003cdiv class=\"novig__value fair-prob\" data-index=\"${outcomeCount}\"\u003e—\u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"novig__field\"\u003e\n                    \u003cspan class=\"novig__field-label\"\u003e公平赔率（无水）\u003c/span\u003e\n                    \u003cdiv class=\"novig__value fair-odds\" data-index=\"${outcomeCount}\"\u003e—\u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        `;\n\n        outcomesList.appendChild(newOutcome);\n        outcomeCount++;\n\n        newOutcome.querySelector('.novig__odds-input').addEventListener('input', calculate);\n        newOutcome.querySelector('.novig__outcome-remove').addEventListener('click', function() {\n            removeOutcome(newOutcome);\n        });\n\n        if (outcomeCount \u003e= maxOutcomes) {\n            container.querySelector('.novig__add-btn').style.display = 'none';\n        }\n\n        calculate();\n    }\n\n    function removeOutcome(outcomeEl) {\n        if (outcomeCount \u003c= 2) return;\n\n        outcomeEl.remove();\n        outcomeCount--;\n\n        const outcomes = container.querySelectorAll('.novig__outcome');\n        outcomes.forEach((outcome, index) =\u003e {\n            outcome.dataset.index = index;\n            outcome.querySelector('.novig__odds-input').dataset.index = index;\n            outcome.querySelectorAll('.novig__value').forEach(v =\u003e v.dataset.index = index);\n        });\n\n        if (outcomeCount \u003c maxOutcomes) {\n            container.querySelector('.novig__add-btn').style.display = 'block';\n        }\n\n        calculate();\n    }\n\n    function calculate() {\n        const inputs = container.querySelectorAll('.novig__odds-input');\n        const impliedCells = container.querySelectorAll('.novig__value.implied');\n        const fairProbCells = container.querySelectorAll('.novig__value.fair-prob');\n        const fairOddsCells = container.querySelectorAll('.novig__value.fair-odds');\n\n        let totalImplied = 0;\n        const impliedProbs = [];\n\n        inputs.forEach((input, index) =\u003e {\n            const value = input.value.trim();\n            const decOdds = getDecimalOdds(value);\n\n            if (value \u0026\u0026 !decOdds) {\n                input.classList.add('invalid');\n                impliedCells[index].textContent = '—';\n                impliedProbs.push(null);\n            } else if (decOdds) {\n                input.classList.remove('invalid');\n                const implied = (1 / decOdds) * 100;\n                totalImplied += implied;\n                impliedProbs.push(implied);\n                impliedCells[index].textContent = implied.toFixed(1) + '%';\n            } else {\n                input.classList.remove('invalid');\n                impliedCells[index].textContent = '—';\n                impliedProbs.push(null);\n            }\n        });\n\n        const totalImpliedEl = container.querySelector('#novigTotalImplied');\n        const vigEl = container.querySelector('#novigVig');\n\n        if (totalImplied \u003e 0) {\n            totalImpliedEl.textContent = totalImplied.toFixed(2) + '%';\n\n            const vig = totalImplied - 100;\n            vigEl.textContent = (vig \u003e= 0 ? '+' : '') + vig.toFixed(2) + '%';\n\n            if (vig \u003e 10) {\n                vigEl.className = 'novig__summary-value bad';\n                totalImpliedEl.className = 'novig__summary-value bad';\n            } else if (vig \u003e 5) {\n                vigEl.className = 'novig__summary-value warning';\n                totalImpliedEl.className = 'novig__summary-value warning';\n            } else if (vig \u003e 0) {\n                vigEl.className = 'novig__summary-value';\n                totalImpliedEl.className = 'novig__summary-value';\n            } else {\n                vigEl.className = 'novig__summary-value good';\n                totalImpliedEl.className = 'novig__summary-value good';\n            }\n\n            impliedProbs.forEach((implied, index) =\u003e {\n                if (implied !== null) {\n                    const fairProb = (implied / totalImplied) * 100;\n                    fairProbCells[index].textContent = fairProb.toFixed(1) + '%';\n\n                    const fairDecimalOdds = 100 / fairProb;\n                    fairOddsCells[index].textContent = formatOdds(fairDecimalOdds);\n                } else {\n                    fairProbCells[index].textContent = '—';\n                    fairOddsCells[index].textContent = '—';\n                }\n            });\n        } else {\n            totalImpliedEl.textContent = '—';\n            totalImpliedEl.className = 'novig__summary-value';\n            vigEl.textContent = '—';\n            vigEl.className = 'novig__summary-value';\n\n            fairProbCells.forEach(cell =\u003e cell.textContent = '—');\n            fairOddsCells.forEach(cell =\u003e cell.textContent = '—');\n        }\n    }\n\n    function reset() {\n        const outcomes = container.querySelectorAll('.novig__outcome');\n        outcomes.forEach((outcome, index) =\u003e {\n            if (index \u003e= 2) outcome.remove();\n        });\n        outcomeCount = 2;\n\n        container.querySelectorAll('.novig__odds-input').forEach(input =\u003e {\n            input.value = '';\n            input.classList.remove('invalid');\n        });\n\n        container.querySelectorAll('.novig__value.implied').forEach(cell =\u003e cell.textContent = '—');\n        container.querySelectorAll('.novig__value.fair-prob').forEach(cell =\u003e cell.textContent = '—');\n        container.querySelectorAll('.novig__value.fair-odds').forEach(cell =\u003e cell.textContent = '—');\n\n        container.querySelector('#novigTotalImplied').textContent = '—';\n        container.querySelector('#novigTotalImplied').className = 'novig__summary-value';\n        container.querySelector('#novigVig').textContent = '—';\n        container.querySelector('#novigVig').className = 'novig__summary-value';\n\n        container.querySelector('.novig__add-btn').style.display = 'block';\n    }\n\n    \n    container.querySelectorAll('.novig__format-btn').forEach(btn =\u003e {\n        btn.addEventListener('click', function() {\n            container.querySelectorAll('.novig__format-btn').forEach(b =\u003e b.classList.remove('active'));\n            this.classList.add('active');\n            currentOddsType = this.dataset.type;\n            updatePlaceholders();\n            calculate();\n        });\n    });\n\n    container.querySelectorAll('.novig__odds-input').forEach(input =\u003e {\n        input.addEventListener('input', calculate);\n    });\n\n    container.querySelector('.novig__add-btn').addEventListener('click', addOutcome);\n    container.querySelector('#novigReset').addEventListener('click', reset);\n})();\n\u003c/script\u003e","title":"无水公平赔率计算器 - 去除庄家利润"},{"content":" 赔率格式 小数 分数 美式 选项 1 选项 2 选项 3 选项 4 单位投注 投注数量 15 总投注 - 派彩 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/lucky-15-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"lucky15_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e单位投注\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投注数量\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e15\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e总投注\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [1, 2, 3, 4];\n    var root = document.getElementById('lucky15_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"幸运15计算器 - 15注系统回报"},{"content":" 赔率格式 小数 分数 美式 选项 1 选项 2 选项 3 选项 4 选项 5 单位投注 投注数量 31 总投注 - 派彩 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/lucky-31-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"lucky31_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 5\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e单位投注\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投注数量\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e31\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e总投注\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [1, 2, 3, 4, 5];\n    var root = document.getElementById('lucky31_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"幸运31计算器 - 31注系统回报"},{"content":" 赔率格式 小数 分数 美式 选项 1 选项 2 选项 3 选项 4 选项 5 选项 6 单位投注 投注数量 63 总投注 - 派彩 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/lucky-63-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"lucky63_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 5\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 6\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e单位投注\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投注数量\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e63\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e总投注\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [1, 2, 3, 4, 5, 6];\n    var root = document.getElementById('lucky63_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"幸运63计算器 - 63注系统回报"},{"content":" 赔率格式 小数 分数 美式 选项 1 选项 2 选项 3 单位投注 投注数量 3 总投注 - 派彩 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/round-robin-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"roundrobin_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e单位投注\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投注数量\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e3\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e总投注\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [2];\n    var root = document.getElementById('roundrobin_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"循环投注计算器 - 多串关回报计算"},{"content":" 赔率格式 小数 分数 美式 选项 1 选项 2 选项 3 选项 4 单位投注 投注数量 11 总投注 - 派彩 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/yankee-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"yankee_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e单位投注\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投注数量\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e11\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e总投注\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [2, 3, 4];\n    var root = document.getElementById('yankee_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"扬基计算器 - 11注系统回报"},{"content":" 隐含概率计算器 步骤1：选择赔率格式 小数 分数 美式 步骤2：输入每个结果的赔率 结果 1 — 结果 2 — + 添加结果 输入小数赔率（如 2.50） 结果 总概率 — 博彩公司利润率 — 正数=博彩公司利润，负数=价值机会 公平赔率（无水） 重置 ","permalink":"https://calculators-odds.com/zh/implied-probability-calculator/","summary":"\u003cstyle\u003e\n.implied {\n    margin: 15px 0;\n    background-color: #1e2328;\n    border-radius: 8px;\n    padding: 20px;\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n    color: #e8e8e8;\n}\n\n.implied__title {\n    font-size: 22px;\n    font-weight: bold;\n    text-align: center;\n    margin-bottom: 25px;\n    color: #e8e8e8;\n}\n\n.implied__section {\n    background: #2d333b;\n    border-radius: 6px;\n    padding: 15px;\n    margin-bottom: 15px;\n}\n\n.implied__section-title {\n    font-size: 14px;\n    font-weight: 600;\n    color: #4CAF50;\n    margin-bottom: 15px;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n}\n\n.implied__format-selector {\n    display: flex;\n    gap: 8px;\n    flex-wrap: wrap;\n}\n\n.implied__format-btn {\n    flex: 1;\n    min-width: 100px;\n    padding: 10px 15px;\n    border: 2px solid #4CAF50;\n    background: transparent;\n    color: #e8e8e8;\n    cursor: pointer;\n    border-radius: 4px;\n    font-size: 14px;\n    font-weight: 500;\n    transition: all 0.2s;\n}\n\n.implied__format-btn:hover {\n    background: rgba(76, 175, 80, 0.2);\n}\n\n.implied__format-btn.active {\n    background: #4CAF50;\n    color: #fff;\n}\n\n.implied__outcomes-list {\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n}\n\n.implied__outcome {\n    display: grid;\n    grid-template-columns: 100px 1fr 70px auto;\n    gap: 10px;\n    align-items: center;\n    padding: 10px;\n    background: rgba(0, 0, 0, 0.2);\n    border-radius: 4px;\n}\n\n.implied__outcome-label {\n    font-weight: 500;\n    font-size: 13px;\n    color: #e8e8e8;\n}\n\n.implied__outcome-input {\n    width: 100%;\n    padding: 10px 12px;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 4px;\n    font-size: 15px;\n    background: #2d333b;\n    color: #e8e8e8;\n    transition: border-color 0.2s;\n}\n\n.implied__outcome-input:focus {\n    outline: none;\n    border-color: #4CAF50;\n}\n\n.implied__outcome-input::placeholder {\n    color: rgba(232, 232, 232, 0.4);\n}\n\n.implied__outcome-input.invalid {\n    border-color: #f44336;\n}\n\n.implied__outcome-prob {\n    font-weight: 600;\n    font-size: 14px;\n    text-align: right;\n    color: #4CAF50;\n}\n\n.implied__outcome-remove {\n    padding: 6px 10px;\n    background: #f44336;\n    color: #fff;\n    border: none;\n    border-radius: 4px;\n    cursor: pointer;\n    font-size: 12px;\n    transition: background 0.2s;\n}\n\n.implied__outcome-remove:hover {\n    background: #d32f2f;\n}\n\n.implied__add-btn {\n    width: 100%;\n    padding: 10px;\n    margin-top: 10px;\n    background: transparent;\n    border: 2px dashed rgba(255, 255, 255, 0.3);\n    color: #e8e8e8;\n    border-radius: 4px;\n    cursor: pointer;\n    font-size: 14px;\n    transition: all 0.2s;\n}\n\n.implied__add-btn:hover {\n    border-color: #4CAF50;\n    color: #4CAF50;\n}\n\n.implied__hint {\n    font-size: 11px;\n    color: rgba(232, 232, 232, 0.5);\n    margin-top: 8px;\n}\n\n.implied__results-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 15px;\n}\n\n.implied__result-box {\n    background: rgba(0, 0, 0, 0.2);\n    padding: 15px;\n    border-radius: 4px;\n    text-align: center;\n}\n\n.implied__result-label {\n    font-size: 11px;\n    color: rgba(232, 232, 232, 0.7);\n    text-transform: uppercase;\n    margin-bottom: 5px;\n}\n\n.implied__result-value {\n    font-size: 22px;\n    font-weight: 700;\n    color: #e8e8e8;\n}\n\n.implied__result-value.positive {\n    color: #4CAF50;\n}\n\n.implied__result-value.negative {\n    color: #f44336;\n}\n\n.implied__result-value.warning {\n    color: #ff9800;\n}\n\n.implied__fair-odds {\n    margin-top: 15px;\n    display: none;\n}\n\n.implied__fair-grid {\n    display: grid;\n    gap: 8px;\n}\n\n.implied__fair-row {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    padding: 10px;\n    background: rgba(0, 0, 0, 0.2);\n    border-radius: 4px;\n}\n\n.implied__fair-label {\n    font-size: 13px;\n    color: rgba(232, 232, 232, 0.8);\n}\n\n.implied__fair-value {\n    font-weight: 600;\n    color: #4CAF50;\n}\n\n.implied__fair-prob {\n    font-size: 12px;\n    color: rgba(232, 232, 232, 0.6);\n    margin-left: 8px;\n}\n\n.implied__buttons {\n    display: flex;\n    justify-content: center;\n    margin-top: 15px;\n}\n\n.implied__btn {\n    padding: 10px 30px;\n    border: none;\n    border-radius: 4px;\n    font-size: 14px;\n    font-weight: 500;\n    cursor: pointer;\n    transition: all 0.2s;\n}\n\n.implied__btn--secondary {\n    background: #666;\n    color: #fff;\n}\n\n.implied__btn--secondary:hover {\n    background: #555;\n}\n\n@media (max-width: 600px) {\n    .implied__outcome {\n        grid-template-columns: 1fr;\n        gap: 8px;\n    }\n\n    .implied__outcome-prob {\n        text-align: left;\n    }\n\n    .implied__results-grid {\n        grid-template-columns: 1fr;\n    }\n\n    .implied__format-btn {\n        min-width: 80px;\n    }\n}\n\u003c/style\u003e\n\n\u003cdiv class=\"implied\"\u003e\n    \u003cdiv class=\"implied__title\"\u003e隐含概率计算器\u003c/div\u003e\n\n    \u003cdiv class=\"implied__section\"\u003e\n        \u003cdiv class=\"implied__section-title\"\u003e步骤1：选择赔率格式\u003c/div\u003e\n        \u003cdiv class=\"implied__format-selector\"\u003e\n            \u003cbutton type=\"button\" class=\"implied__format-btn active\" data-type=\"decimal\"\u003e小数\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"implied__format-btn\" data-type=\"fractional\"\u003e分数\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"implied__format-btn\" data-type=\"american\"\u003e美式\u003c/button\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"implied__section\"\u003e\n        \u003cdiv class=\"implied__section-title\"\u003e步骤2：输入每个结果的赔率\u003c/div\u003e\n        \u003cdiv class=\"implied__outcomes-list\"\u003e\n            \u003cdiv class=\"implied__outcome\" data-index=\"0\"\u003e\n                \u003cspan class=\"implied__outcome-label\"\u003e结果 1\u003c/span\u003e\n                \u003cinput type=\"text\" class=\"implied__outcome-input\" placeholder=\"2.50\" data-index=\"0\"\u003e\n                \u003cspan class=\"implied__outcome-prob\" data-index=\"0\"\u003e—\u003c/span\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"implied__outcome\" data-index=\"1\"\u003e\n                \u003cspan class=\"implied__outcome-label\"\u003e结果 2\u003c/span\u003e\n                \u003cinput type=\"text\" class=\"implied__outcome-input\" placeholder=\"2.50\" data-index=\"1\"\u003e\n                \u003cspan class=\"implied__outcome-prob\" data-index=\"1\"\u003e—\u003c/span\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n        \u003cbutton type=\"button\" class=\"implied__add-btn\"\u003e+ 添加结果\u003c/button\u003e\n        \u003cdiv class=\"implied__hint implied__hint-format\"\u003e输入小数赔率（如 2.50）\u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"implied__section\"\u003e\n        \u003cdiv class=\"implied__section-title\"\u003e结果\u003c/div\u003e\n        \u003cdiv class=\"implied__results-grid\"\u003e\n            \u003cdiv class=\"implied__result-box\"\u003e\n                \u003cdiv class=\"implied__result-label\"\u003e总概率\u003c/div\u003e\n                \u003cdiv class=\"implied__result-value\" id=\"impliedTotalProb\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"implied__result-box\"\u003e\n                \u003cdiv class=\"implied__result-label\"\u003e博彩公司利润率\u003c/div\u003e\n                \u003cdiv class=\"implied__result-value\" id=\"impliedMargin\"\u003e—\u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"implied__hint\"\u003e正数=博彩公司利润，负数=价值机会\u003c/div\u003e\n\n        \u003cdiv class=\"implied__fair-odds\" id=\"impliedFairOdds\"\u003e\n            \u003cdiv class=\"implied__section-title\" style=\"margin-top: 15px;\"\u003e公平赔率（无水）\u003c/div\u003e\n            \u003cdiv class=\"implied__fair-grid\" id=\"impliedFairOddsContent\"\u003e\u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"implied__buttons\"\u003e\n        \u003cbutton type=\"button\" class=\"implied__btn implied__btn--secondary\" id=\"impliedReset\"\u003e重置\u003c/button\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n    let currentOddsType = 'decimal';\n    let outcomeCount = 2;\n    const maxOutcomes = 10;\n\n    const placeholders = {\n        decimal: '2.50',\n        fractional: '3\\/2',\n        american: '\\u002b150'\n    };\n\n    const hints = {\n        decimal: '输入小数赔率（如 2.50）',\n        fractional: '输入分数赔率（如 3\\/2）',\n        american: '输入美式赔率（如 \\u002b150 或 -200）'\n    };\n\n    const outcomeLabels = [\n        '结果 1',\n        '结果 2',\n        '结果 3（平局）',\n        'Outcome 4',\n        'Outcome 5',\n        'Outcome 6',\n        'Outcome 7',\n        'Outcome 8',\n        'Outcome 9',\n        'Outcome 10'\n    ];\n\n    function validateDecimal(value) {\n        return /^\\d+(\\.\\d+)?$/.test(value) \u0026\u0026 parseFloat(value) \u003e 1;\n    }\n\n    function validateFractional(value) {\n        return /^\\d+\\/\\d+$/.test(value);\n    }\n\n    function validateAmerican(value) {\n        return /^[+-]?\\d+$/.test(value) \u0026\u0026 (parseInt(value) \u003e= 100 || parseInt(value) \u003c= -100);\n    }\n\n    function fractionalToDecimal(fraction) {\n        const parts = fraction.split('/');\n        return (parseFloat(parts[0]) / parseFloat(parts[1])) + 1;\n    }\n\n    function americanToDecimal(american) {\n        const value = parseInt(american);\n        return value \u003e 0 ? (value / 100) + 1 : (100 / Math.abs(value)) + 1;\n    }\n\n    function decimalToFractional(decimal) {\n        const profit = decimal - 1;\n        const gcd = (a, b) =\u003e b ? gcd(b, a % b) : a;\n        const precision = 1000;\n        const numerator = Math.round(profit * precision);\n        const denominator = precision;\n        const divisor = gcd(numerator, denominator);\n        return `${numerator / divisor}/${denominator / divisor}`;\n    }\n\n    function decimalToAmerican(decimal) {\n        if (decimal \u003e= 2) {\n            return '+' + Math.round((decimal - 1) * 100);\n        }\n        return Math.round(-100 / (decimal - 1));\n    }\n\n    function getDecimalOdds(value) {\n        if (!value) return null;\n\n        if (currentOddsType === 'decimal') {\n            return validateDecimal(value) ? parseFloat(value) : null;\n        } else if (currentOddsType === 'fractional') {\n            return validateFractional(value) ? fractionalToDecimal(value) : null;\n        } else if (currentOddsType === 'american') {\n            return validateAmerican(value) ? americanToDecimal(value) : null;\n        }\n        return null;\n    }\n\n    function impliedProbability(decimalOdds) {\n        return (1 / decimalOdds) * 100;\n    }\n\n    function fairOdds(decimalOdds, totalImpliedProb) {\n        const impliedProb = 1 / decimalOdds;\n        const fairProb = impliedProb / (totalImpliedProb / 100);\n        return 1 / fairProb;\n    }\n\n    function updatePlaceholders() {\n        const inputs = container.querySelectorAll('.implied__outcome-input');\n        inputs.forEach(input =\u003e {\n            input.placeholder = placeholders[currentOddsType];\n        });\n\n        const hintEl = container.querySelector('.implied__hint-format');\n        if (hintEl) {\n            hintEl.textContent = hints[currentOddsType];\n        }\n    }\n\n    function addOutcome() {\n        if (outcomeCount \u003e= maxOutcomes) return;\n\n        const outcomesList = container.querySelector('.implied__outcomes-list');\n\n        const newOutcome = document.createElement('div');\n        newOutcome.className = 'implied__outcome';\n        newOutcome.dataset.index = outcomeCount;\n        newOutcome.innerHTML = `\n            \u003cspan class=\"implied__outcome-label\"\u003e${outcomeLabels[outcomeCount] || 'Outcome ' + (outcomeCount + 1)}\u003c/span\u003e\n            \u003cinput type=\"text\" class=\"implied__outcome-input\" placeholder=\"${placeholders[currentOddsType]}\" data-index=\"${outcomeCount}\"\u003e\n            \u003cspan class=\"implied__outcome-prob\" data-index=\"${outcomeCount}\"\u003e—\u003c/span\u003e\n            \u003cbutton type=\"button\" class=\"implied__outcome-remove\"\u003e✕\u003c/button\u003e\n        `;\n\n        outcomesList.appendChild(newOutcome);\n        outcomeCount++;\n\n        newOutcome.querySelector('.implied__outcome-input').addEventListener('input', calculate);\n        newOutcome.querySelector('.implied__outcome-remove').addEventListener('click', function() {\n            removeOutcome(newOutcome);\n        });\n\n        if (outcomeCount \u003e= maxOutcomes) {\n            container.querySelector('.implied__add-btn').style.display = 'none';\n        }\n    }\n\n    function removeOutcome(outcomeEl) {\n        outcomeEl.remove();\n        outcomeCount--;\n\n        const outcomes = container.querySelectorAll('.implied__outcome');\n        outcomes.forEach((outcome, index) =\u003e {\n            outcome.dataset.index = index;\n            outcome.querySelector('.implied__outcome-input').dataset.index = index;\n            outcome.querySelector('.implied__outcome-prob').dataset.index = index;\n        });\n\n        if (outcomeCount \u003c maxOutcomes) {\n            container.querySelector('.implied__add-btn').style.display = 'block';\n        }\n\n        calculate();\n    }\n\n    function calculate() {\n        const inputs = container.querySelectorAll('.implied__outcome-input');\n        const probs = container.querySelectorAll('.implied__outcome-prob');\n\n        let totalImpliedProb = 0;\n        const decimalOddsList = [];\n\n        inputs.forEach((input, index) =\u003e {\n            const value = input.value.trim();\n            const decOdds = getDecimalOdds(value);\n\n            if (value \u0026\u0026 !decOdds) {\n                input.classList.add('invalid');\n                probs[index].textContent = '—';\n                decimalOddsList.push(null);\n            } else if (decOdds) {\n                input.classList.remove('invalid');\n                const prob = impliedProbability(decOdds);\n                totalImpliedProb += prob;\n                decimalOddsList.push(decOdds);\n                probs[index].textContent = prob.toFixed(1) + '%';\n            } else {\n                input.classList.remove('invalid');\n                probs[index].textContent = '—';\n                decimalOddsList.push(null);\n            }\n        });\n\n        const totalProbEl = container.querySelector('#impliedTotalProb');\n        const marginEl = container.querySelector('#impliedMargin');\n        const fairOddsContainer = container.querySelector('#impliedFairOdds');\n        const fairOddsContent = container.querySelector('#impliedFairOddsContent');\n\n        if (totalImpliedProb \u003e 0) {\n            totalProbEl.textContent = totalImpliedProb.toFixed(2) + '%';\n\n            const margin = totalImpliedProb - 100;\n            marginEl.textContent = (margin \u003e= 0 ? '+' : '') + margin.toFixed(2) + '%';\n\n            if (totalImpliedProb \u003e 100) {\n                totalProbEl.className = 'implied__result-value warning';\n                marginEl.className = 'implied__result-value negative';\n            } else if (totalImpliedProb \u003c 100) {\n                totalProbEl.className = 'implied__result-value positive';\n                marginEl.className = 'implied__result-value positive';\n            } else {\n                totalProbEl.className = 'implied__result-value';\n                marginEl.className = 'implied__result-value';\n            }\n\n            const validOdds = decimalOddsList.filter(o =\u003e o !== null);\n            if (validOdds.length \u003e= 2) {\n                fairOddsContainer.style.display = 'block';\n                let fairOddsHTML = '';\n\n                decimalOddsList.forEach((decOdds, index) =\u003e {\n                    if (decOdds) {\n                        const fair = fairOdds(decOdds, totalImpliedProb);\n                        const fairProb = impliedProbability(fair);\n                        let displayOdds = fair.toFixed(2);\n\n                        if (currentOddsType === 'fractional') {\n                            displayOdds = decimalToFractional(fair);\n                        } else if (currentOddsType === 'american') {\n                            displayOdds = decimalToAmerican(fair);\n                        }\n\n                        fairOddsHTML += `\n                            \u003cdiv class=\"implied__fair-row\"\u003e\n                                \u003cspan class=\"implied__fair-label\"\u003e${outcomeLabels[index] || 'Outcome ' + (index + 1)}\u003c/span\u003e\n                                \u003cspan\u003e\n                                    \u003cspan class=\"implied__fair-value\"\u003e${displayOdds}\u003c/span\u003e\n                                    \u003cspan class=\"implied__fair-prob\"\u003e(${fairProb.toFixed(1)}%)\u003c/span\u003e\n                                \u003c/span\u003e\n                            \u003c/div\u003e\n                        `;\n                    }\n                });\n\n                fairOddsContent.innerHTML = fairOddsHTML;\n            } else {\n                fairOddsContainer.style.display = 'none';\n            }\n        } else {\n            totalProbEl.textContent = '—';\n            totalProbEl.className = 'implied__result-value';\n            marginEl.textContent = '—';\n            marginEl.className = 'implied__result-value';\n            fairOddsContainer.style.display = 'none';\n        }\n    }\n\n    function reset() {\n        const outcomes = container.querySelectorAll('.implied__outcome');\n        outcomes.forEach((outcome, index) =\u003e {\n            if (index \u003e= 2) outcome.remove();\n        });\n        outcomeCount = 2;\n\n        container.querySelectorAll('.implied__outcome-input').forEach(input =\u003e {\n            input.value = '';\n            input.classList.remove('invalid');\n        });\n\n        container.querySelectorAll('.implied__outcome-prob').forEach(prob =\u003e {\n            prob.textContent = '—';\n        });\n\n        container.querySelector('#impliedTotalProb').textContent = '—';\n        container.querySelector('#impliedTotalProb').className = 'implied__result-value';\n        container.querySelector('#impliedMargin').textContent = '—';\n        container.querySelector('#impliedMargin').className = 'implied__result-value';\n        container.querySelector('#impliedFairOdds').style.display = 'none';\n        container.querySelector('.implied__add-btn').style.display = 'block';\n    }\n\n    \n    container.querySelectorAll('.implied__format-btn').forEach(btn =\u003e {\n        btn.addEventListener('click', function() {\n            container.querySelectorAll('.implied__format-btn').forEach(b =\u003e b.classList.remove('active'));\n            this.classList.add('active');\n            currentOddsType = this.dataset.type;\n            updatePlaceholders();\n            calculate();\n        });\n    });\n\n    container.querySelectorAll('.implied__outcome-input').forEach(input =\u003e {\n        input.addEventListener('input', calculate);\n    });\n\n    container.querySelector('.implied__add-btn').addEventListener('click', addOutcome);\n    container.querySelector('#impliedReset').addEventListener('click', reset);\n})();\n\u003c/script\u003e","title":"隐含概率计算器 - 赔率转换为胜率"},{"content":" 连胜类型 正序连胜 反向连胜 第一名赔率 第二名赔率 投注额 投注数量 1 总投注 - 预估派息 - 派彩 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/forecast-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"forecast_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e连胜类型\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-type\"\u003e\n            \u003coption value=\"straight\"\u003e正序连胜\u003c/option\u003e\n            \u003coption value=\"reverse\"\u003e反向连胜\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e第一名赔率\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds1\" type=\"text\" placeholder=\"3.00\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e第二名赔率\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-odds2\" type=\"text\" placeholder=\"5.00\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e投注额\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"1\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投注数量\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-numbets\"\u003e1\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e总投注\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e预估派息\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-dividend\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('forecast_0');\n    var typeEl = root.querySelector('.js-type');\n    var odds1El = root.querySelector('.js-odds1');\n    var odds2El = root.querySelector('.js-odds2');\n    var stakeEl = root.querySelector('.js-stake');\n    var numBetsEl = root.querySelector('.js-numbets');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var dividendEl = root.querySelector('.js-dividend');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var o1 = parseFloat(odds1El.value);\n        var o2 = parseFloat(odds2El.value);\n        var stake = parseFloat(stakeEl.value);\n        var isReverse = typeEl.value === 'reverse';\n        var numBets = isReverse ? 2 : 1;\n        numBetsEl.textContent = numBets;\n\n        if (isNaN(o1) || isNaN(o2) || o1 \u003c= 1 || o2 \u003c= 1) {\n            totalStakeEl.textContent = '-'; dividendEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return;\n        }\n        if (!stake || stake \u003c= 0) {\n            totalStakeEl.textContent = '-'; dividendEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return;\n        }\n\n        var dividend = o1 * o2;\n        var totalStake = stake * numBets;\n        var payout = dividend * stake;\n\n        totalStakeEl.textContent = formatNumber(totalStake);\n        dividendEl.textContent = formatNumber(dividend);\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(payout - totalStake);\n    }\n\n    typeEl.addEventListener('change', update);\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        odds1El.value=''; odds2El.value=''; stakeEl.value='';\n        typeEl.selectedIndex=0; numBetsEl.textContent='1';\n        totalStakeEl.textContent='-'; dividendEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"预测投注计算器 - 计算前两名回报"},{"content":" 赔率格式 小数 分数 美式 选项 1 选项 2 选项 3 单位投注 投注数量 7 总投注 - 派彩 - 利润 - 重置 ","permalink":"https://calculators-odds.com/zh/patent-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"patent_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e单位投注\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投注数量\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e7\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e总投注\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [1, 2, 3];\n    var root = document.getElementById('patent_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e","title":"专利投注计算器 - 7注系统回报"},{"content":" 赔率格式 小数 分数 美式 选项 1 选项 2 选项 3 选项 4 + 添加选项 − 删除 投注额 综合赔率 - 派彩 - 利润 - 重置 什么是串关投注？ 串关投注（也称为\u0026quot;过关\u0026quot;、\u0026ldquo;Parlay\u0026quot;或\u0026quot;组合投注\u0026rdquo;）将四个或更多选项组合成单一投注。所有选项都必须赢才能获得派彩。赔率相乘，创造出从小额投注获得可观回报的潜力——但风险很大，因为每个选项都必须正确。\n主要特点：\n来自不同赛事的4个或更多选项 所有选项都必须赢 赔率呈指数倍增 一个选项输 = 整个投注失败 所有标准投注类型中潜在回报最高 常见串关大小：\n名称 选项数 综合赔率示例 4串 4 2.0 × 2.0 × 2.0 × 2.0 = 16.00 5串 5 2.0⁵ = 32.00 6串 6 2.0⁶ = 64.00 10串 10 2.0¹⁰ = 1,024.00 串关计算器如何工作 添加您的选项，计算器会即时计算您的潜在回报：\n输入 说明 选项赔率 每个选项的赔率（可添加任意数量） 投注金额 串关投注的总金额 赔率格式 小数、分数或美式 规则4 可选的每选项扣除（赛马） 串关公式 综合赔率 = 赔率₁ × 赔率₂ × 赔率₃ × ... × 赔率ₙ 总派彩 = 投注金额 × 综合赔率 利润 = 总派彩 - 投注金额 示例： 5个选项，赔率分别为1.50、1.80、2.00、1.60、2.20，投注¥100\n综合赔率 = 1.50 × 1.80 × 2.00 × 1.60 × 2.20 = 19.01 派彩 = ¥100 × 19.01 = ¥1,901 利润 = ¥1,901 - ¥100 = ¥1,801 真实串关示例 周六足球5串 选项 比赛 赔率 1 阿森纳击败布莱顿 1.55 2 利物浦击败狼队 1.40 3 曼城击败伯恩利 1.25 4 切尔西击败埃弗顿 1.70 5 热刺击败富勒姆 1.65 投注金额： ¥200\n计算：\n综合赔率：1.55 × 1.40 × 1.25 × 1.70 × 1.65 = 7.61 潜在派彩：¥200 × 7.61 = ¥1,522 潜在利润：¥1,322 如果五支球队全部获胜，您将获得¥1,522。如果即使一支球队未能获胜，您将完全失去¥200投注。\n串关的威力（和风险） 赔率如何倍增 串关的指数特性创造出巨大的潜在回报：\n投注金额 4串（全部2.0） 6串（全部2.0） 10串（全部2.0） ¥50 ¥800 ¥3,200 ¥51,200 ¥100 ¥1,600 ¥6,400 ¥102,400 ¥200 ¥3,200 ¥12,800 ¥204,800 但概率对您不利 选项数 每个胜率 串关胜率 4 50% 6.25% 5 50% 3.13% 6 50% 1.56% 10 50% 0.098% 即使每个选项有60%的胜率：\n4串：13%的机会 6串：4.7%的机会 10串：0.6%的机会 现实检验： 大多数休闲玩家赢得的串关不到二十分之一。\n串关结果说明 所有选项获胜 ✓ 选项 结果 阿森纳 ✓ 赢 利物浦 ✓ 赢 曼城 ✓ 赢 切尔西 ✓ 赢 热刺 ✓ 赢 结果： 全额派彩（上例中的¥1,522）\n一个选项输 ✗ 选项 结果 阿森纳 ✓ 赢 利物浦 ✓ 赢 曼城 ✓ 赢 切尔西 ✗ 输 热刺 ✓ 赢 结果： 整个投注失败 - 返还¥0\n五中四不够好。串关是全赢或全输。\n一个选项无效 ⊘ 选项 结果 阿森纳 ✓ 赢 利物浦 ✓ 赢 曼城 ⊘ 无效 切尔西 ✓ 赢 热刺 ✓ 赢 结果： 5串变为剩余选项的4串。\n新计算：¥200 × (1.55 × 1.40 × 1.70 × 1.65) = ¥1,217.90\n热门串关类型 足球串关 类型 说明 典型赔率 周末串关 5-6场英超热门 5-15× 双方进球串关 多场比赛双方都进球 10-30× 大2.5球串关 多场比赛进球超过2.5 8-25× 比分串关 准确比分（风险很高！） 100-1000×+ 赛马串关 类型 说明 热门串关 支持多场比赛的热门 位置串关 每个选项的位置条款 赛会串关 所有选项来自同一赛会 美国体育串关（Parlay） 运动 热门组合 NFL 周日让分盘 NBA 独赢热门 MLB 跑分线选择 NHL 冰球线过关 串关保险和加成 许多博彩公司为串关提供促销活动：\n串关保险 如果5串以上的一个选项输了，将投注金额作为免费投注返还。\n示例： 6串，5赢1输 → 投注金额作为免费投注返还\n串关加成 对赢得的串关增加百分比奖金。\n选项数 典型加成 4 5% 5 10% 6 15% 7+ 20%+ 示例： 5串赢¥1,000，10%加成 = 总赢利¥1,100\n串关编辑 一些博彩公司允许您：\n从已结算的串关中移除输掉的选项 在所有赛事结束前编辑选项 请务必查看条款——这些优惠有条件限制。\n串关策略技巧 1. 保持合理的选项数 选项越多，您的机会越低。4-6个选项在回报和概率之间提供平衡。\n2. 明智地混合赔率 不要只选择大热门（回报低）或全部冷门（不会赢）。1.40-2.50赔率的组合创造价值。\n3. 研究每个选项 您的串关只有最弱选项那么强。一个随意的选择会毁掉一切。\n4. 赛马考虑位置投注 位置串关在选项入围时也会派彩，提供安全网。\n5. 有串关保险时使用 如果一个选项可以输而不失去投注金额，这会显著改变数学计算。\n6. 设定预算 串关是高风险的娱乐投注。永远不要投注您无法承受损失的钱。\n串关 vs 系统投注 在直接串关和系统投注之间犹豫？这是比较：\n特性 串关 系统投注（如扬基） 需要的选项 全部必须赢 部分可以输 投注金额 较低 较高（多个投注） 全赢时的回报 最高 较低 1个输时的回报 零 仍有派彩 风险级别 非常高 中等 4个选项的示例：\n4串：1注，全部必须赢 扬基：11注（6个双串 + 4个三串 + 1个四串），2个以上赢仍有派彩 计算大型串关 10串示例 选项 球队 赔率 1 阿森纳 1.50 2 利物浦 1.45 3 曼城 1.30 4 切尔西 1.60 5 热刺 1.55 6 曼联 1.70 7 纽卡斯尔 1.80 8 布莱顿 2.00 9 阿斯顿维拉 1.90 10 西汉姆 1.75 ¥50投注：\n综合赔率：1.50 × 1.45 × 1.30 × 1.60 × 1.55 × 1.70 × 1.80 × 2.00 × 1.90 × 1.75 = 94.47 潜在派彩：¥50 × 94.47 = ¥4,723.50 潜在利润：¥4,673.50 胜率（假设每个50%）：0.5¹⁰ = 0.098%（大约1000分之1）\n串关神话破解 神话1：\u0026ldquo;串关是赚钱的好方法\u0026rdquo; 现实： 博彩公司的利润率随着每个选项倍增。4串的利润率大约是单注的4倍。\n神话2：\u0026ldquo;我只需要选对赢家\u0026rdquo; 现实： 您需要击败赔率，而不仅仅是选对赢家。热门经常赢，但很少有价值赔率。\n神话3：\u0026ldquo;我的串关差点赢了，我快成功了\u0026rdquo; 现实： 每个串关都是独立的。差点赢不会增加未来的机会。\n神话4：\u0026ldquo;增加更多选项值得更大回报\u0026rdquo; 现实： 每个选项都会指数级降低您的胜率，而潜在回报只是线性增加。\n何时使用串关 好的用途 用您能承受损失的钱进行娱乐投注 利用串关保险/加成优惠 小额投注获得潜在大回报 对您正在观看的赛事进行休闲投注 不好的用途 试图持续建立资金 专业/认真投注 投注超过您能承受损失的金额 追回之前投注的损失 常见问题 串关最多可以有多少个选项？ 大多数博彩公司允许10-20个选项，有些允许25个。最高派彩限制通常在您达到这些限制之前就会生效。\n如果串关中的比赛延期会怎样？ 该选项被视为无效并移除。您的6串变成赔率降低的5串。\n我可以提前兑现串关吗？ 是的，大多数博彩公司在所有选项完成之前都提供串关的提前兑现。价值取决于目前的结果和剩余赔率。\n串关和Parlay有什么区别？ 它们是同一回事。\u0026ldquo;串关\u0026quot;是英国术语；\u0026ldquo;Parlay\u0026quot;在美国使用。\n串关有价值吗？ 通常没有。博彩公司的利润率随每个选项复合增长。然而，串关保险等促销活动可以提高价值。\n什么是位置串关？ 位置串关在选项获胜或入围时都会派彩。它是两个投注：一个获胜串关和一个位置串关。对赛马很有用。\n开始计算您的串关 使用上面的免费串关计算器：\n添加任意数量的选项 以任何格式输入赔率（小数、分数或美式） 输入您的投注金额 即时查看综合赔率、潜在派彩和利润 调整选项以比较不同组合 计算器实时更新，让您轻松尝试不同选项，找到匹配您风险偏好和预算的串关。\n","permalink":"https://calculators-odds.com/zh/accumulator-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"acca_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections js-selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row calc-wrap__sel-row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row calc-wrap__sel-row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row calc-wrap__sel-row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row calc-wrap__sel-row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row calc-wrap__row--actions\"\u003e\n        \u003cbutton class=\"calc-wrap__btn calc-wrap__btn--sm js-add\" type=\"button\"\u003e+ 添加选项\u003c/button\u003e\n        \u003cbutton class=\"calc-wrap__btn calc-wrap__btn--sm calc-wrap__btn--outline js-remove\" type=\"button\"\u003e− 删除\u003c/button\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e投注额\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e综合赔率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-combined\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const root = document.getElementById('acca_0');\n    const formatEl = root.querySelector('.js-format');\n    const selectionsEl = root.querySelector('.js-selections');\n    const stakeEl = root.querySelector('.js-stake');\n    const combinedEl = root.querySelector('.js-combined');\n    const payoutEl = root.querySelector('.js-payout');\n    const profitEl = root.querySelector('.js-profit');\n    const addBtn = root.querySelector('.js-add');\n    const removeBtn = root.querySelector('.js-remove');\n    const resetBtn = root.querySelector('.js-reset');\n    const selLabel = '选项';\n\n    function getOddsInputs() { return root.querySelectorAll('.js-odds'); }\n\n    function update() {\n        const format = formatEl.value;\n        const oddsInputs = getOddsInputs();\n        let combined = 1, allValid = true;\n\n        oddsInputs.forEach(function(input) {\n            const d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); }\n            if (d) combined *= d; else allValid = false;\n        });\n\n        const stake = parseFloat(stakeEl.value);\n        if (!allValid) { combinedEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n\n        combinedEl.textContent = combined.toFixed(2);\n        if (!stake || stake \u003c= 0) { payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n\n        const payout = combined * stake;\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(payout - stake);\n    }\n\n    addBtn.addEventListener('click', function() {\n        const count = getOddsInputs().length;\n        if (count \u003e= 20) return;\n        const row = document.createElement('div');\n        row.className = 'calc-wrap__row calc-wrap__sel-row';\n        row.innerHTML = '\u003clabel class=\"calc-wrap__label\"\u003e' + selLabel + ' ' + (count + 1) + '\u003c/label\u003e\u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"' + getOddsPlaceholder(formatEl.value) + '\" /\u003e';\n        selectionsEl.appendChild(row);\n    });\n\n    removeBtn.addEventListener('click', function() {\n        const rows = selectionsEl.querySelectorAll('.calc-wrap__sel-row');\n        if (rows.length \u003e 2) { rows[rows.length - 1].remove(); update(); }\n    });\n\n    formatEl.addEventListener('change', function() {\n        getOddsInputs().forEach(i =\u003e i.placeholder = getOddsPlaceholder(formatEl.value));\n        update();\n    });\n    root.addEventListener('input', update);\n\n    resetBtn.addEventListener('click', function() {\n        const rows = selectionsEl.querySelectorAll('.calc-wrap__sel-row');\n        rows.forEach(function(r, i) { if (i \u003e= 4) r.remove(); });\n        getOddsInputs().forEach(i =\u003e { i.value = ''; i.classList.remove('invalid'); });\n        stakeEl.value = ''; formatEl.selectedIndex = 0;\n        combinedEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-';\n    });\n})();\n\u003c/script\u003e\n\n\u003ch2 id=\"什么是串关投注\"\u003e什么是串关投注？\u003c/h2\u003e\n\u003cp\u003e串关投注（也称为\u0026quot;过关\u0026quot;、\u0026ldquo;Parlay\u0026quot;或\u0026quot;组合投注\u0026rdquo;）将四个或更多选项组合成单一投注。所有选项都必须赢才能获得派彩。赔率相乘，创造出从小额投注获得可观回报的潜力——但风险很大，因为每个选项都必须正确。\u003c/p\u003e","title":"串关计算器 - 计算多选项过关投注回报"},{"content":" 赔率格式 小数 分数 美式 选项 1 选项 2 选项 3 选项 4 选项 5 单位投注 投注数量 26 总投注 - 派彩 - 利润 - 重置 什么是加拿大投注？ 加拿大投注（也称为超级扬基）是一种由5个选项组成的26注系统投注：\n10个双串 10个三串 5个四串 1个五串 不包含单注 - 您至少需要2个赢家才能获得回报。\n加拿大结构（5个选项：A、B、C、D、E）：\n投注类型 数量 公式 双串 10 C(5,2) 三串 10 C(5,3) 四串 5 C(5,4) 五串 1 C(5,5) 总计 26 加拿大在系统投注层次中位于扬基（4选项，11注）和亨氏（6选项，57注）之间。\u0026ldquo;超级扬基\u0026quot;这个名称反映了它通过增加第五个选项扩展了扬基概念。\n计算器如何工作 输入您的五个选项和单位投注额：\n输入 说明 选项1-5赔率 您5个选项的赔率 单位投注额 每注金额（总额 = 单位 × 26） 计算器从您的5个选项生成所有26种组合，将每个获胜组合的赔率相乘，并汇总回报以给出总派彩。\n投注额计算 总投注额 = 单位投注额 × 26注 示例： ¥10单位投注额 = ¥260总投注额\n逐步计算过程 输入赔率 - 以小数或分数格式输入所有5个选项的赔率 设置单位投注额 - 每个26注的投注金额 标记赢家和输家 - 指明哪些选项赢了，哪些输了 计算 - 工具识别每个获胜组合，将赔率相乘，并应用您的单位投注额 查看总回报和利润 - 总回报减去总投注额得出净利润或损失 回报公式 对于任何n个选项的获胜组合：\n单注回报 = 单位投注额 × (赔率₁ × 赔率₂ × ... × 赔率ₙ) 总回报 = 所有获胜投注回报之和 利润 = 总回报 - 总投注额 为什么使用加拿大投注计算器？ 对于跨越4种不同投注类型的26个单独投注，手动计算既繁琐又容易出错。以下是计算器有帮助的原因：\n即时准确 - 26次计算无算术错误风险 场景测试 - 下注前快速检查不同输赢组合的回报 投注额规划 - 查看总支出和潜在回报，决定投注是否适合您的资金 比较工具 - 比较加拿大与扬基、幸运31或亨氏的潜在回报 部分获胜分析 - 准确了解只有2、3或4个选项获胜时您能拿回多少 加拿大 vs 扬基 vs 幸运31 特性 扬基 加拿大 幸运31 选项数 4 5 5 总投注数 11 26 31 包含单注 否 否 是（5个） 投注额（¥10单位） ¥110 ¥260 ¥310 回报最少赢家数 2 2 1 双串 6 10 10 三串 4 10 10 四串 1 5 5 五串 — 1 1 选择加拿大当： 您想要比扬基更多覆盖但不需要单注保护，并希望比幸运31每单位节省¥50。\n选择幸运31当： 您想要单注的安全网 - 只需1个赢家就有回报。\n选择扬基当： 您有4个选项并希望较低的总投注额。\n加拿大投注示例 您的选项 选项 小数赔率 分数 A 3.00 2/1 B 4.00 3/1 C 5.00 4/1 D 3.50 5/2 E 4.50 7/2 单位投注额： ¥10 总投注额： ¥260\n示例1：全部5个获胜 所有26注获胜，从每个组合产生回报：\n双串（10注）：\nA×B = 3.00 × 4.00 = ¥120 A×C = 3.00 × 5.00 = ¥150 A×D = 3.00 × 3.50 = ¥105 A×E = 3.00 × 4.50 = ¥135 B×C = 4.00 × 5.00 = ¥200 B×D = 4.00 × 3.50 = ¥140 B×E = 4.00 × 4.50 = ¥180 C×D = 5.00 × 3.50 = ¥175 C×E = 5.00 × 4.50 = ¥225 D×E = 3.50 × 4.50 = ¥157.50 双串小计：¥1,587.50\n三串（10注）：\nA×B×C = ¥600 A×B×D = ¥420 A×B×E = ¥540 A×C×D = ¥525 A×C×E = ¥675 A×D×E = ¥472.50 B×C×D = ¥700 B×C×E = ¥900 B×D×E = ¥630 C×D×E = ¥787.50 三串小计：¥6,250\n四串（5注）：\nA×B×C×D = ¥2,100 A×B×C×E = ¥2,700 A×B×D×E = ¥1,890 A×C×D×E = ¥2,362.50 B×C×D×E = ¥3,150 四串小计：¥12,202.50\n五串（1注）：\nA×B×C×D×E = 3.00 × 4.00 × 5.00 × 3.50 × 4.50 = ¥9,450 总回报：¥29,490 | 利润：¥29,230\n示例2：4赢1输（A、B、C、D赢 - E输） 投注类型 总投注 获胜投注 计算 双串 10 6 C(4,2) 三串 10 4 C(4,3) 四串 5 1 C(4,4) 五串 1 0 — 获胜投注：26注中的11注。\n获胜双串：A×B=¥120, A×C=¥150, A×D=¥105, B×C=¥200, B×D=¥140, C×D=¥175 → ¥890 获胜三串：A×B×C=¥600, A×B×D=¥420, A×C×D=¥525, B×C×D=¥700 → ¥2,245 获胜四串：A×B×C×D = ¥2,100 总回报：¥5,235 | 利润：¥4,975\n示例3：3赢2输（A、B、C赢） 投注类型 获胜投注 双串 3 三串 1 四串 0 五串 0 获胜投注：26注中的4注。\n双串：A×B=¥120, A×C=¥150, B×C=¥200 → ¥470 三串：A×B×C = ¥600 总回报：¥1,070 | 利润：¥810\n示例4：2赢3输（A、B赢） 只有1个双串获胜：A×B = 3.00 × 4.00 = ¥120\n总回报：¥120 | 亏损：¥140\n在这些赔率下，2个赢家无法覆盖¥260的投注额。您需要两个选项都有更高的赔率（例如，都在6.00以上）才能让2个赢家产生利润。\n加拿大结果摘要 赢家数 获胜投注 典型结果 5/5 26 大利润 4/5 11 可观利润 3/5 4 中等利润（取决于赔率） 2/5 1 通常亏损 1/5 0 全部损失 0/5 0 全部损失 何时使用加拿大投注 理想情况 5个有信心的选项 - 来自不同赛事或运动 中等赔率（2/1到5/1）- 最大化多赢家回报 比扬基更多覆盖 - 额外一个选项增加15注 不需要单注保护 - 对获得至少2个赢家有信心 中等资金 - 每单位¥260对大多数玩家可管理 何时避免 只有1个强选项 - 考虑单注或幸运31 非常低的赔率（低于2/1）- 双串回报可能无法覆盖投注额 资金紧张 - 即使每单位¥260可能也太多 想要单注安全 - 选择幸运31获得1赢家保护 快速回报表 单位投注额：¥10（总计：¥260）\n赔率（全部相同） 全5赢 4赢 3赢 2赢 2.00 ¥2,120 ¥550 ¥160 ¥40 2.50 ¥5,710 ¥1,180 ¥280 ¥60 3.00 ¥12,660 ¥2,190 ¥450 ¥90 4.00 ¥45,240 ¥6,300 ¥1,110 ¥160 5.00 ¥122,760 ¥14,300 ¥2,150 ¥250 策略技巧 1. 投注额管理 每单位26注，仔细规划您的投注额：\n¥5单位 = ¥130总计 ¥10单位 = ¥260总计 ¥20单位 = ¥520总计 ¥50单位 = ¥1,300总计 保持加拿大总投注额在总资金的2-5%以内。\n2. 混合短赔率和长赔率 平衡方法效果好：\n2-3个选项在2/1到3/1（稳定选项 - 更高获胜概率） 2-3个选项在4/1到6/1（价值选项 - 提升串关回报） 如果您的稳定选项获胜，您仍能从双串和三串收益。如果价值选项也中了，四串和五串提供大额派彩。\n3. 盈亏平衡分析 所有选项相同赔率时：\n2/1（3.00）时：需要3个赢家才能盈亏平衡（¥450回报 vs ¥260投注额） 3/1（4.00）时：需要2-3个赢家（2赢家=¥160，3赢家=¥1,110） 5/1（6.00）时：2个赢家可覆盖投注额（¥360回报 vs ¥260投注额） 4. 分散您的选项 将选项分布在不同的运动、联赛或赛事中。避免从同一场比赛或同一比赛的球员中选择多个 - 如果条件影响一个，可能会影响所有。\n5. 考虑位置加拿大 位置加拿大有52注（26个获胜 + 26个入围）。这在选项入围但未获胜时提供保护，但总投注额翻倍。最适合有标准位置条款的赛马。\n常见问题 加拿大和超级扬基一样吗？ 是的，加拿大和超级扬基是同一种投注的两个名称：5个选项的26注，包括10个双串、10个三串、5个四串和1个五串。不包含单注。\n加拿大需要多少个赢家才能派彩？ 至少需要2个赢家才能有回报。但是，您通常需要3个中等赔率（约3/1）的赢家才能在¥260投注额上盈亏平衡。\n加拿大和幸运31有什么区别？ 两者都使用5个选项。加拿大有26注（无单注）；幸运31有31注（包含5个单注）。幸运31只需1个赢家就有派彩，但多花5个单位。当您对2个以上赢家有信心时选择加拿大。\n加拿大投注要多少钱？ 加拿大的成本是单位投注额的26倍。¥10单位是¥260，¥20单位是¥520，¥50单位是¥1,300。\n我可以下位置加拿大吗？ 可以。位置加拿大将投注翻倍到52注（26个获胜 + 26个入围），所以总投注额也翻倍。当选项入围但未获胜时，位置部分以降低的赔率派彩。\n如果一个选项退赛会怎样？ 如果一个选项退赛，它以1.0的赔率结算。这实际上将您的加拿大减少为扬基（4个选项，11个有效投注），退赛选项在所有组合中按平赔处理。\n加拿大投注值得吗？ 当您有5个中等赔率的强选项时，加拿大提供良好价值。26注结构意味着即使3-4个赢家也能产生可观利润，而且它比幸运31更实惠。\n","permalink":"https://calculators-odds.com/zh/canadian-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"canadian_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections\"\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 3\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 4\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 5\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e单位投注\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"10\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投注数量\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value\"\u003e26\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e总投注\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-totalstake\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var FOLDS = [2, 3, 4, 5];\n    var root = document.getElementById('canadian_0');\n    var formatEl = root.querySelector('.js-format');\n    var stakeEl = root.querySelector('.js-stake');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var odds = [], allValid = true;\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) odds.push(d); else allValid = false; }\n        });\n        var unitStake = parseFloat(stakeEl.value);\n        if (!allValid || !unitStake || unitStake \u003c= 0) { totalStakeEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n        var r = calcSystemBet(odds, unitStake, FOLDS);\n        totalStakeEl.textContent = formatNumber(r.totalStake);\n        payoutEl.textContent = formatNumber(r.totalPayout);\n        profitEl.textContent = formatNumber(r.totalPayout - r.totalStake);\n    }\n\n    formatEl.addEventListener('change', function() { root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);}); update(); });\n    root.addEventListener('input', update);\n    resetBtn.addEventListener('click', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        stakeEl.value=''; formatEl.selectedIndex=0; totalStakeEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-';\n    });\n})();\n\u003c/script\u003e\n\n\u003ch2 id=\"什么是加拿大投注\"\u003e什么是加拿大投注？\u003c/h2\u003e\n\u003cp\u003e加拿大投注（也称为超级扬基）是一种由\u003cstrong\u003e5个选项组成的26注\u003c/strong\u003e系统投注：\u003c/p\u003e","title":"加拿大（超级扬基）计算器 - 计算26注系统投注回报"},{"content":" 赔率格式 小数 分数 美式 选项 1 选项 2 投注额 综合赔率 - 派彩 - 利润 - 重置 什么是双串投注？ 双串投注将两个选项组合成单一投注。两个选项都必须获胜才能成功。两个选项的赔率相乘，创造出比两个单独单注更大的潜在回报——但风险更高，因为两个都必须赢。\n主要特点：\n来自不同赛事的2个选项 两个都必须赢才能获得派彩 赔率相乘 一个选项输 = 整个投注失败 回报高于单注，低于串关 双串示例：\n阿森纳获胜 AND 曼城获胜（两个都必须赢） 马A赢第1场 AND 马B赢第2场 湖人-5.5 AND 凯尔特人-3.5（两个都必须覆盖） 双串计算器如何工作 输入您的两个选项和投注额，计算器即时显示您的潜在回报：\n输入 说明 选项1赔率 您第一个选项的赔率 选项2赔率 您第二个选项的赔率 投注额 双串的总投注金额 规则4 可选的赛马退赛扣除 双串公式 综合赔率 = 赔率1 × 赔率2 总派彩 = 投注额 × 综合赔率 利润 = 总派彩 - 投注额 示例： 选项1赔率2.00 + 选项2赔率3.00，¥100投注\n综合赔率 = 2.00 × 3.00 = 6.00 派彩 = ¥100 × 6.00 = ¥600 利润 = ¥600 - ¥100 = ¥500 双串情景说明 情景1：两个选项都赢 ✓ 选项 赔率 结果 利物浦获胜 1.80 ✓ 赢 切尔西获胜 2.20 ✓ 赢 投注额： ¥250 综合赔率： 1.80 × 2.20 = 3.96 派彩： ¥250 × 3.96 = ¥990 利润： ¥740\n情景2：一个选项输 ✗ 选项 赔率 结果 利物浦获胜 1.80 ✓ 赢 切尔西获胜 2.20 ✗ 输 投注额： ¥250 结果： 整个投注失败 - 返还¥0\n这是双串的关键风险：一个选项输意味着您失去一切。\n情景3：一个选项无效（延期/退赛） 选项 赔率 结果 利物浦获胜 1.80 ✓ 赢 切尔西获胜 2.20 ⊘ 无效 发生什么： 无效选项被移除，双串变成单注。\n投注额： ¥250 有效赔率： 1.80（只有利物浦） 派彩： ¥250 × 1.80 = ¥450 利润： ¥200\n为什么选择双串投注？ 优势 回报高于单注 - 赔率相乘意味着显著更高的派彩 所需投注额较低 - 从较小投资获得可观回报 简单易懂 - 只需跟踪两个选项 灵活组合 - 混合运动、联赛或投注类型 劣势 两个都必须赢 - 一个输毁掉整个投注 概率较低 - 比单注更难赢 博彩公司利润率复合 - 您支付两次庄家优势 双串 vs 两个单注：数学分析 让我们比较双串与用相同总投注额下两个单注：\n选项：\n球队A赔率2.00 球队B赔率2.50 选项1：双串（¥200投注）\n综合赔率：2.00 × 2.50 = 5.00 如果两个都赢：¥1,000回报（¥800利润） 如果一个输：¥0回报（¥200损失） 选项2：两个单注（各¥100）\n球队A赢：¥200回报（¥100利润） 球队B赢：¥250回报（¥150利润） 两个都赢：¥450回报（¥250利润） 一个赢一个输：平均¥225回报（¥25利润） 结果 双串回报 两个单注回报 两个都赢 ¥1,000 ¥450 只有A赢 ¥0 ¥200 只有B赢 ¥0 ¥250 两个都输 ¥0 ¥0 权衡： 双串提供更高的潜在回报但风险更大。两个单注提供较小但更稳定的回报。\n热门双串组合 足球双串 组合 示例 比赛结果双串 曼城获胜 + 利物浦获胜 双方进球双串 比赛1双方进球 + 比赛2双方进球 大小球双串 比赛A大2.5球 + 比赛B小2.5球 任意时刻进球双串 哈兰德进球 + 萨拉赫进球 赛马双串 组合 示例 获胜双串 马A赢2:30比赛 + 马B赢3:15比赛 推荐双串 两个报纸专家选项 热门双串 投注两场不同比赛的热门 美国体育双串 组合 示例 让分双串 酋长-3.5 + 比尔-7 独赢双串 湖人获胜 + 凯尔特人获胜 总分双串 比赛1大220.5 + 比赛2小215.5 双串中的规则4扣除 规则4适用于赛马中投注开始后马匹退赛的情况。如果退赛影响您的双串：\n规则4如何与双串配合 情景： 您对马A（3/1）和马B（4/1）下双串。马C以2/1赔率从马A的比赛中退出，触发30%规则4。\n计算：\n马A调整后的赔率：利润减少30% 马B的赔率：不受影响 综合派彩：反映扣除 无规则4时：\n¥100投注 × (4.00 × 5.00) = ¥2,000 选项1有30%规则4时：\n选项1调整后：利润部分(3.00) × 70% = 2.10，总赔率 = 3.10 综合：¥100 × (3.10 × 5.00) = ¥1,550 我们的计算器自动为每个选项独立处理规则4。\n计算双串回报：逐步指南 步骤1：将赔率转换为小数 如果使用分数或美式赔率，首先转换为小数：\n格式 示例 小数 分数 5/2 3.50 (5÷2 + 1) 美式(+) +200 3.00 (200÷100 + 1) 美式(-) -150 1.67 (1 + 100÷150) 步骤2：将赔率相乘 选项1：2.50（小数） 选项2：1.80（小数） 综合：2.50 × 1.80 = 4.50\n步骤3：计算回报 投注额：¥500 派彩：¥500 × 4.50 = ¥2,250 利润：¥2,250 - ¥500 = ¥1,750\n何时使用双串投注 理想情况 两个强选项 - 当您对两个结果真正有信心时 相关事件 - 当一个结果增加另一个的可能性时 寻找价值 - 结合两个被低估的赔率以获得最大效果 小资金 - 从有限资金获得大回报 何时避免双串 不确定的选项 - 如果您对两个选择都不确定 高风险赔率 - 结合长赔率使获胜非常不可能 积累资金 - 单注提供更稳定的增长 专业投注 - 复合利润率减少价值 双串概率解释 理解双串背后的数学帮助设定现实预期：\n单个胜率 双串胜率 各50% 25% (0.50 × 0.50) 各60% 36% (0.60 × 0.60) 各70% 49% (0.70 × 0.70) 各80% 64% (0.80 × 0.80) 即使单个选项有70%的胜率，您也只能赢得约一半的双串。\n成功双串投注的技巧 平等研究两个选项 - 双串只有最弱选项那么强\n考虑相关性 - 一些事件自然相关（球队获胜和球星进球）\n明智地混合赔率 - 结合热门和冷门平衡风险和回报\n设定现实预期 - 双串比单注输得更频繁\n跟踪您的结果 - 单独监控您的双串投注表现\n使用投注额限制 - 不要用更大的双串追赶损失\n常见问题 如果我的双串中一场比赛延期会怎样？ 双串变成剩余选项的单注。您的投注以其原始赔率押在那个结果上。\n我可以提前兑现双串吗？ 大多数博彩公司提供双串的提前兑现。兑现价值取决于两个选项的状态。\n双串和Parlay一样吗？ 是的，在美国术语中，双串是2场过关或2队过关。\n双串的最少和最多选项数是多少？ 双串必须恰好有2个选项。一个选项是单注；三个或更多是串关/三串。\n我可以对同一赛事下双串吗？ 通常不可以——您不能对同一场比赛的结果进行双串（例如，球队A获胜 AND 同一场比赛大2.5球）。一些博彩公司提供\u0026quot;同场多选\u0026quot;但赔率会调整。\n开始计算您的双串投注 使用上面的免费双串计算器：\n输入两个选项的赔率（任何格式） 输入您的投注金额 如需要应用规则4扣除 即时查看您的潜在派彩和利润 计算器实时更新，让您轻松比较不同组合，找到适合您投注策略的双串。\n","permalink":"https://calculators-odds.com/zh/double-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"double_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections js-selections\"\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e选项 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e投注额\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e综合赔率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-combined\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const root = document.getElementById('double_0');\n    const formatEl = root.querySelector('.js-format');\n    const oddsInputs = root.querySelectorAll('.js-odds');\n    const stakeEl = root.querySelector('.js-stake');\n    const combinedEl = root.querySelector('.js-combined');\n    const payoutEl = root.querySelector('.js-payout');\n    const profitEl = root.querySelector('.js-profit');\n    const resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        const format = formatEl.value;\n        let combined = 1;\n        let allValid = true;\n\n        oddsInputs.forEach(function(input) {\n            const d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); }\n            if (d) combined *= d; else allValid = false;\n        });\n\n        const stake = parseFloat(stakeEl.value);\n\n        if (!allValid) {\n            combinedEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-';\n            return;\n        }\n\n        combinedEl.textContent = combined.toFixed(2);\n        if (!stake || stake \u003c= 0) { payoutEl.textContent = '-'; profitEl.textContent = '-'; return; }\n\n        const payout = combined * stake;\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(payout - stake);\n    }\n\n    formatEl.addEventListener('change', function() {\n        oddsInputs.forEach(i =\u003e i.placeholder = getOddsPlaceholder(formatEl.value));\n        update();\n    });\n    oddsInputs.forEach(el =\u003e el.addEventListener('input', update));\n    stakeEl.addEventListener('input', update);\n\n    resetBtn.addEventListener('click', function() {\n        oddsInputs.forEach(i =\u003e { i.value = ''; i.classList.remove('invalid'); });\n        stakeEl.value = ''; formatEl.selectedIndex = 0;\n        combinedEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-';\n    });\n})();\n\u003c/script\u003e\n\n\u003ch2 id=\"什么是双串投注\"\u003e什么是双串投注？\u003c/h2\u003e\n\u003cp\u003e双串投注将两个选项组合成单一投注。两个选项都必须获胜才能成功。两个选项的赔率相乘，创造出比两个单独单注更大的潜在回报——但风险更高，因为两个都必须赢。\u003c/p\u003e","title":"双串计算器 - 计算2选项投注回报"},{"content":" 赔率格式 小数 分数 美式 总投注 结果 1 - 结果 2 - + 添加结果 − 删除 利润率 - 派彩 - 利润 - 投资回报率 - 重置 什么是套利投注？ 套利投注（也称为\u0026quot;对冲套利\u0026quot;或\u0026quot;稳赢投注\u0026quot;）是一种策略，您在不同博彩公司对赛事的所有可能结果下注，无论结果如何都能保证获利。\n运作原理：\n博彩公司A对球队1提供高赔率 博彩公司B对球队2提供高赔率 综合赔率创造利润空间 您在两个结果上投注计算好的金额 无论谁赢您都获利 示例： 网球比赛 - 选手A vs 选手B\n博彩公司1：选手A赔率2.10 博彩公司2：选手B赔率2.05 如果综合利润率低于100%，就存在套利机会。\n套利计算器如何工作 输入不同博彩公司的赔率：\n输入 说明 结果1赔率 第一个结果的最佳赔率 结果2赔率 第二个结果的最佳赔率 结果3赔率 可选：三向市场（平局） 总投注额 您想投资的金额 计算器显示：\n是否存在套利机会 每个结果的确切投注金额 保证利润金额 利润百分比 套利公式详解 双向套利（两个结果） 套利% = (1/赔率1) + (1/赔率2) × 100 如果结果 \u0026lt; 100%： 存在套利 如果结果 \u0026gt; 100%： 无套利（博彩公司利润率）\n计算各项投注金额 结果1投注额 = 总投注额 × (1/赔率1) / 套利% 结果2投注额 = 总投注额 × (1/赔率2) / 套利% 计算示例 网球比赛：\n赔率1：2.10（选手A获胜） 赔率2：2.05（选手B获胜） 总投注额：¥1000 步骤1：检查套利\n(1/2.10) + (1/2.05) = 0.476 + 0.488 = 0.964 (96.4%) 96.4% \u0026lt; 100% = 存在套利！\n步骤2：计算投注额\n选手A投注额 = ¥1000 × (1/2.10) / 0.964 = ¥493.78 选手B投注额 = ¥1000 × (1/2.05) / 0.964 = ¥506.22 步骤3：计算回报\n结果 投注额 回报 利润 选手A赢 ¥493.78 ¥493.78 × 2.10 = ¥1,036.94 ¥36.94 选手B赢 ¥506.22 ¥506.22 × 2.05 = ¥1,037.75 ¥37.75 保证利润： 约¥37（3.7%回报率），无论结果如何。\n三向套利（包含平局） 对于足球等有三种结果的运动：\n套利% = (1/赔率1) + (1/赔率2) + (1/平局赔率) × 100 示例：足球比赛 主胜：3.50 平局：3.80 客胜：2.20 (1/3.50) + (1/3.80) + (1/2.20) = 0.286 + 0.263 + 0.455 = 1.004 (100.4%) 100.4% \u0026gt; 100% = 无套利机会。\n有效的三向示例 主胜：4.00 平局：4.20 客胜：2.10 (1/4.00) + (1/4.20) + (1/2.10) = 0.250 + 0.238 + 0.476 = 0.964 (96.4%) 存在套利！ 投注¥1000：\n结果 投注额 回报 主胜 ¥259.34 ¥1,037.36 平局 ¥246.89 ¥1,036.94 客胜 ¥493.78 ¥1,036.94 保证利润： 约¥37\n套利机会类型 1. 赛前套利 赛事开始前发现：\n有更多时间下注 更容易执行 利润率较低（0.5% - 5%） 2. 滚球/实时套利 赛事进行中发现：\n赔率快速变化 利润潜力更高 需要快速执行 赔率变化风险更高 3. 跨市场套利 在相关但不同的市场下注：\n亚洲盘口 vs 1X2 大小球 vs 球队总分 计算更复杂 现实套利利润率 市场类型 典型利润率 说明 网球 1% - 5% 两种结果，竞争激烈 足球(1X2) 0.5% - 3% 三种结果，更难找到 篮球 1% - 4% 独赢线和让分 电子竞技 2% - 8% 市场效率较低 小众运动 3% - 10% 博彩公司较少，差距更大 套利机会何时出现 博彩公司定价差异 不同博彩公司有不同看法：\n博彩公司A看好球队1 博彩公司B看好球队2 综合赔率创造机会 赔率变动时机 当新闻发布或投注涌入时：\n一家博彩公司快速调整 另一家博彩公司反应滞后 临时套利窗口打开 促销赔率加成 博彩公司促销可能创造套利：\n一个结果的赔率增强 其他地方正常赔率 有利可图的组合 套利投注风险 1. 账户限制 最大风险。 博彩公司不喜欢套利者：\n账户投注限额 限制市场 账户关闭 缓解措施： 将投注金额取整，变化投注额度，不要频繁提款。\n2. 赔率变化 赔率可能在下注之间变化：\n您下了第一注 第二注的赔率下降 套利消失或变成亏损 缓解措施： 使用博彩交易所，快速下注，准备好账户。\n3. 明显错误 博彩公司可以取消明显错误的投注：\n定价错误的赔率被取消 您只剩下单边敞口 缓解措施： 避免可疑的高赔率，检查是否有错误。\n4. 最大投注限额 您可能无法下您计算的投注额：\n博彩公司限额较低 市场流动性不足 缓解措施： 计算前检查限额，使用多家博彩公司。\n套利投注策略 1. 从小开始 开始时：\n¥5,000-25,000总资金 5-10个博彩公司账户 只做赛前机会 积累经验后再扩大规模。\n2. 记录一切 保存记录：\n每笔套利投注 使用的博彩公司 投注额和利润 账户限制 3. 分散博彩公司 不要过度使用任何单一博彩公司：\n在不同博彩公司之间轮换 将投注量分散到各账户 保持健康的投注模式 4. 使用套利软件 手动搜索很慢。考虑：\n赔率比较网站 套利提醒服务 博彩交易所API 套利所需资金 月目标 平均利润率 月周转 所需资金 ¥1,000 2% ¥50,000 ¥5,000-10,000 ¥5,000 2% ¥250,000 ¥25,000-50,000 ¥10,000 2% ¥500,000 ¥50,000-100,000 假设资金每月在所有博彩公司投注5-10次\n套利 vs 价值投注 特性 套利 价值投注 风险 零（理论上） 有些波动 利润率 较低（1-5%） 较高（2-10%+） 账户限制 更快被限制 较慢被限制 复杂度 更高（多笔投注） 较低（单笔投注） 资本效率 较低 较高 许多经验丰富的玩家结合使用两种方法。\n快速套利参考 2%利润的最低赔率 赔率1 最低赔率2 1.80 2.33 2.00 2.08 2.20 1.92 2.50 1.72 3.00 1.52 套利百分比指南 百分比 含义 \u0026lt; 95% 强套利（5%+利润） 95% - 98% 良好套利（2-5%利润） 98% - 100% 边缘套利（\u0026lt;2%利润） 100% - 105% 无套利（正常市场） \u0026gt; 105% 高水市场 常见问题 套利投注合法吗？ 是的，套利投注是合法的。您只是在不同博彩公司下注。但是，博彩公司可能会关闭或限制疑似套利者的账户。\n我能从套利中赚多少钱？ 有¥50,000资金和投入的话，每月¥5,000-10,000是现实的。拥有大量资金的专业套利者可以赚更多。\n为什么博彩公司不阻止套利？ 他们试图通过限额和账户关闭来阻止。但不同博彩公司对赔率有不同看法，自然产生价格差异。\n我需要特殊软件吗？ 不是必需的但有帮助。手动搜索很耗时。许多套利者使用赔率比较工具或套利提醒服务。\n我需要多快？ 赛前套利可持续几分钟到几小时。滚球套利可能只持续几秒。速度很重要，尤其是滚球投注。\n哪些运动最适合套利？ 网球和篮球（2种结果）最容易。足球更难（3种结果）。小众运动通常利润率更大但流动性较低。\n开始发现套利机会 使用上面的免费套利计算器：\n输入不同博彩公司的赔率 查看是否存在套利机会 计算每个结果的确切投注额 下注前知道您的保证利润 比较双向和三向市场 计算器即时显示您是否有盈利机会，以及每个结果需要投注多少才能保证回报。\n","permalink":"https://calculators-odds.com/zh/arbitrage-bet-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"arb_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e总投注\u003c/label\u003e\n        \u003cinput class=\"calc-wrap__input js-totalstake\" type=\"text\" placeholder=\"1000\" /\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__selections js-selections\"\u003e\n        \u003cdiv class=\"calc-wrap__row calc-wrap__sel-row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e结果 1\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n            \u003cspan class=\"calc-wrap__stake-out js-stake-out\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__row calc-wrap__sel-row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e结果 2\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n            \u003cspan class=\"calc-wrap__stake-out js-stake-out\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__row calc-wrap__row--actions\"\u003e\n        \u003cbutton class=\"calc-wrap__btn calc-wrap__btn--sm js-add\" type=\"button\"\u003e+ 添加结果\u003c/button\u003e\n        \u003cbutton class=\"calc-wrap__btn calc-wrap__btn--sm calc-wrap__btn--outline js-remove\" type=\"button\"\u003e− 删除\u003c/button\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-margin\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e投资回报率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-roi\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    var root = document.getElementById('arb_0');\n    var formatEl = root.querySelector('.js-format');\n    var totalStakeEl = root.querySelector('.js-totalstake');\n    var selectionsEl = root.querySelector('.js-selections');\n    var marginEl = root.querySelector('.js-margin');\n    var payoutEl = root.querySelector('.js-payout');\n    var profitEl = root.querySelector('.js-profit');\n    var roiEl = root.querySelector('.js-roi');\n    var addBtn = root.querySelector('.js-add');\n    var removeBtn = root.querySelector('.js-remove');\n    var resetBtn = root.querySelector('.js-reset');\n    var outcomeLabel = '结果';\n\n    function update() {\n        var format = formatEl.value;\n        var inputs = root.querySelectorAll('.js-odds');\n        var stakeOuts = root.querySelectorAll('.js-stake-out');\n        var totalStake = parseFloat(totalStakeEl.value);\n        var decimalOdds = [];\n        var invertedSum = 0;\n        var allValid = true;\n\n        inputs.forEach(function(input) {\n            var d = convertToDecimal(input.value.trim(), format);\n            if (d === null \u0026\u0026 input.value.trim()) { input.classList.add('invalid'); allValid = false; }\n            else { input.classList.remove('invalid'); if (d) { decimalOdds.push(d); invertedSum += 1/d; } else allValid = false; }\n        });\n\n        if (!allValid || decimalOdds.length \u003c 2) {\n            marginEl.textContent = '-'; payoutEl.textContent = '-'; profitEl.textContent = '-'; roiEl.textContent = '-';\n            stakeOuts.forEach(function(s) { s.textContent = '-'; });\n            return;\n        }\n\n        var margin = (1 - invertedSum) * 100;\n        marginEl.textContent = margin.toFixed(2) + '%';\n        marginEl.style.color = margin \u003e 0 ? '#4CAF50' : '#f44336';\n\n        if (!totalStake || totalStake \u003c= 0) {\n            payoutEl.textContent = '-'; profitEl.textContent = '-'; roiEl.textContent = '-';\n            stakeOuts.forEach(function(s) { s.textContent = '-'; });\n            return;\n        }\n\n        var payout = totalStake / invertedSum;\n        var profit = payout - totalStake;\n        var roi = (profit / totalStake) * 100;\n\n        stakeOuts.forEach(function(s, i) {\n            var individualStake = (totalStake / invertedSum) * (1 / decimalOdds[i]);\n            s.textContent = formatNumber(individualStake);\n        });\n\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(profit);\n        roiEl.textContent = roi.toFixed(2) + '%';\n    }\n\n    addBtn.addEventListener('click', function() {\n        var count = root.querySelectorAll('.js-odds').length;\n        if (count \u003e= 10) return;\n        var row = document.createElement('div');\n        row.className = 'calc-wrap__row calc-wrap__sel-row';\n        row.innerHTML = '\u003clabel class=\"calc-wrap__label\"\u003e' + outcomeLabel + ' ' + (count+1) + '\u003c/label\u003e\u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"' + getOddsPlaceholder(formatEl.value) + '\" /\u003e\u003cspan class=\"calc-wrap__stake-out js-stake-out\"\u003e-\u003c/span\u003e';\n        selectionsEl.appendChild(row);\n    });\n\n    removeBtn.addEventListener('click', function() {\n        var rows = selectionsEl.querySelectorAll('.calc-wrap__sel-row');\n        if (rows.length \u003e 2) { rows[rows.length-1].remove(); update(); }\n    });\n\n    formatEl.addEventListener('change', function() {\n        root.querySelectorAll('.js-odds').forEach(function(i){i.placeholder=getOddsPlaceholder(formatEl.value);});\n        update();\n    });\n    root.addEventListener('input', update);\n\n    resetBtn.addEventListener('click', function() {\n        var rows = selectionsEl.querySelectorAll('.calc-wrap__sel-row');\n        rows.forEach(function(r,i){ if(i\u003e=2)r.remove(); });\n        root.querySelectorAll('.js-odds').forEach(function(i){i.value='';i.classList.remove('invalid');});\n        root.querySelectorAll('.js-stake-out').forEach(function(s){s.textContent='-';});\n        totalStakeEl.value=''; formatEl.selectedIndex=0;\n        marginEl.textContent='-'; payoutEl.textContent='-'; profitEl.textContent='-'; roiEl.textContent='-';\n    });\n})();\n\u003c/script\u003e\n\n\u003ch2 id=\"什么是套利投注\"\u003e什么是套利投注？\u003c/h2\u003e\n\u003cp\u003e套利投注（也称为\u0026quot;对冲套利\u0026quot;或\u0026quot;稳赢投注\u0026quot;）是一种策略，您在不同博彩公司对赛事的\u003cstrong\u003e所有可能结果\u003c/strong\u003e下注，无论结果如何都能保证获利。\u003c/p\u003e","title":"套利投注计算器 - 发现无风险投注机会"},{"content":" 赔率格式 小数 分数 美式 赔率 投注额 派彩 - 利润 - 隐含概率 - 重置 什么是投注赔率计算器？ 投注赔率计算器帮助您：\n计算潜在派彩 - 根据任何投注金额和赔率 转换赔率 - 在小数、分数和美式格式之间转换 找出隐含概率 - 赔率暗示的胜率 计算博彩公司利润率 - 赔率中内置的优势 这是在下注前理解任何投注的必备工具。\n理解赔率格式 小数赔率（欧洲式） 全球最常用。 显示每投注¥1的总回报。\n小数赔率 ¥100投注回报 利润 1.50 ¥150 ¥50 2.00 ¥200 ¥100 3.00 ¥300 ¥200 5.00 ¥500 ¥400 公式： 回报 = 投注金额 × 小数赔率\n隐含概率： 1 / 小数赔率 × 100\n分数赔率（英式） 传统英国格式。 显示相对于投注金额的利润。\n分数赔率 含义 小数等值 1/1（平赔） 每投注¥1赢¥1 2.00 2/1 每投注¥1赢¥2 3.00 1/2 每投注¥2赢¥1 1.50 5/2 每投注¥2赢¥5 3.50 9/4 每投注¥4赢¥9 3.25 公式： 利润 = 投注金额 × (分子 / 分母)\n美式赔率（独赢线） 美国格式。 正数显示¥100投注的利润；负数显示赢¥100需要的投注金额。\n美式赔率 含义 小数 +150 ¥100投注赢¥150利润 2.50 +200 ¥100投注赢¥200利润 3.00 -150 投注¥150赢¥100利润 1.67 -200 投注¥200赢¥100利润 1.50 +100 ¥100投注赢¥100利润（平赔） 2.00 公式：\n正数：小数 = (美式 / 100) + 1 负数：小数 = (100 / |美式|) + 1 赔率转换表 小数 分数 美式 隐含概率 1.25 1/4 -400 80.0% 1.33 1/3 -300 75.0% 1.50 1/2 -200 66.7% 1.67 2/3 -150 60.0% 1.80 4/5 -125 55.6% 1.91 10/11 -110 52.4% 2.00 1/1 +100 50.0% 2.10 11/10 +110 47.6% 2.50 3/2 +150 40.0% 3.00 2/1 +200 33.3% 4.00 3/1 +300 25.0% 5.00 4/1 +400 20.0% 6.00 5/1 +500 16.7% 10.00 9/1 +900 10.0% 21.00 20/1 +2000 4.8% 计算潜在派彩 小数赔率派彩 总回报 = 投注金额 × 小数赔率 利润 = 总回报 - 投注金额 示例： ¥50投注，赔率2.40\n回报：¥50 × 2.40 = ¥120 利润：¥120 - ¥50 = ¥70 分数赔率派彩 利润 = 投注金额 × (分子 / 分母) 总回报 = 利润 + 投注金额 示例： ¥50投注，赔率7/4\n利润：¥50 × (7/4) = ¥87.50 回报：¥87.50 + ¥50 = ¥137.50 美式赔率派彩 正数赔率（+）：\n利润 = 投注金额 × (美式 / 100) 示例： ¥50投注，+180\n利润：¥50 × (180/100) = ¥90 回报：¥90 + ¥50 = ¥140 负数赔率（-）：\n利润 = 投注金额 × (100 / |美式|) 示例： ¥50投注，-150\n利润：¥50 × (100/150) = ¥33.33 回报：¥33.33 + ¥50 = ¥83.33 隐含概率 隐含概率显示赔率暗示的结果发生几率。\n计算隐含概率 格式 公式 小数 1 / 赔率 × 100 分数 分母 / (分子 + 分母) × 100 美式（+） 100 / (美式 + 100) × 100 美式（-） |美式| / (|美式| + 100) × 100 示例 小数赔率2.50：\n1 / 2.50 × 100 = 40% 分数赔率3/1：\n1 / (3 + 1) × 100 = 25% 美式赔率+200：\n100 / (200 + 100) × 100 = 33.3% 美式赔率-150：\n150 / (150 + 100) × 100 = 60% 博彩公司利润率（超额投注） 博彩公司在赔率中内置利润率。这被称为\u0026quot;超额投注\u0026quot;或\u0026quot;水钱\u0026quot;。\n如何计算利润率 将所有结果的隐含概率相加：\n利润率 = (1/赔率1 + 1/赔率2 + ...) × 100 - 100% 示例：足球比赛 结果 小数赔率 隐含概率 主胜 2.10 47.6% 平局 3.40 29.4% 客胜 3.50 28.6% 总计 105.6% 利润率： 105.6% - 100% = 5.6%\n这意味着每投注¥100在所有结果上，博彩公司预期保留¥5.60。\n典型博彩公司利润率 市场类型 典型利润率 主要足球 2-5% 网球 3-6% 赛马 10-20% 小众运动 5-10% 滚球投注 5-10% 利润率越低 = 对玩家越有价值\n发现价值投注 当您估计的概率高于隐含概率时，就存在价值投注。\n价值计算 价值 = (您的概率 × 小数赔率) - 1 如果价值 \u0026gt; 0： 投注具有正期望值\n示例 赔率：3.00（隐含概率：33.3%） 您的估计：40%的获胜几率 价值 = (0.40 × 3.00) - 1 = 1.20 - 1 = +0.20（20%价值） 这是价值投注——您估计40%的机会，但只需要33.3%就能保本。\n过关赔率计算器 对于多选项（串关）：\n综合小数赔率 = 赔率1 × 赔率2 × 赔率3 × ... 示例：3场过关 选项 小数赔率 投注1 1.80 投注2 2.10 投注3 1.65 综合赔率：1.80 × 2.10 × 1.65 = 6.24\n¥10投注回报：¥10 × 6.24 = ¥62.40\n从目标利润计算投注金额 想赢取特定金额？计算所需投注金额：\n投注金额 = 目标利润 / (小数赔率 - 1) 示例 想在赔率2.50时赢¥100：\n投注金额 = ¥100 / (2.50 - 1) = ¥100 / 1.50 = ¥66.67 快速参考表 赢¥100所需投注金额 小数赔率 所需投注 1.50 ¥200.00 1.80 ¥125.00 2.00 ¥100.00 2.50 ¥66.67 3.00 ¥50.00 4.00 ¥33.33 5.00 ¥25.00 ¥100投注的回报 小数赔率 总回报 利润 1.50 ¥150 ¥50 2.00 ¥200 ¥100 2.50 ¥250 ¥150 3.00 ¥300 ¥200 5.00 ¥500 ¥400 10.00 ¥1,000 ¥900 常见问题 哪种赔率格式最好？ 小数赔率最容易计算。投注金额乘以赔率即可得到总回报。大多数在线博彩网站都允许您选择喜欢的格式。\n如何知道赔率是否好？ 将隐含概率与您自己的评估进行比较。如果您认为一支球队有50%的机会，但赔率暗示只有40%，那就是好价值。同时比较不同博彩公司的赔率。\n为什么不同博彩公司的赔率不同？ 博彩公司有不同的意见、不同的客户群和不同的利润率。在多个博彩公司之间比较最佳赔率可以增加您的长期回报。\n-110是什么意思？ 美式赔率-110意味着您投注¥110赢¥100利润。这是让分盘的标准水钱。相当于小数赔率1.91或分数赔率10/11。\n博彩公司如何赚钱？ 通过内置在赔率中的利润率（超额投注）。所有结果的隐含概率加起来超过100%，保证博彩公司长期盈利。\n我应该总是选择最高赔率吗？ 通常是的，但要考虑其他因素如博彩公司可靠性、投注限额和奖金优惠。在可信赖的博彩公司略低的赔率可能更可取。\n开始计算您的投注 使用上面的免费投注赔率计算器：\n以任何格式（小数、分数、美式）输入赔率 即时查看所有格式之间的转换 计算任何投注金额的潜在派彩 找出隐含概率 在投注前理解赔率的含义 计算器让您轻松比较不同博彩公司的价值，做出明智的投注决策。\n","permalink":"https://calculators-odds.com/zh/betting-odds-calculator/","summary":"\u003cdiv class=\"calc-wrap\" id=\"bkcoeff_0\"\u003e\n    \u003cdiv class=\"calc-wrap__row\"\u003e\n        \u003clabel class=\"calc-wrap__label\"\u003e赔率格式\u003c/label\u003e\n        \u003cselect class=\"calc-wrap__select js-format\"\u003e\n            \u003coption value=\"Decimal\"\u003e小数\u003c/option\u003e\n            \u003coption value=\"Fractional\"\u003e分数\u003c/option\u003e\n            \u003coption value=\"American\"\u003e美式\u003c/option\u003e\n        \u003c/select\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__grid\"\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e赔率\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-odds\" type=\"text\" placeholder=\"2.50\" /\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__row\"\u003e\n            \u003clabel class=\"calc-wrap__label\"\u003e投注额\u003c/label\u003e\n            \u003cinput class=\"calc-wrap__input js-stake\" type=\"text\" placeholder=\"100\" /\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"calc-wrap__results\"\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e派彩\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-payout\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e利润\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value calc-wrap__result-value--profit js-profit\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"calc-wrap__result-item\"\u003e\n            \u003cspan class=\"calc-wrap__result-label\"\u003e隐含概率\u003c/span\u003e\n            \u003cspan class=\"calc-wrap__result-value js-probability\"\u003e-\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton class=\"calc-wrap__btn js-reset\" type=\"button\"\u003e重置\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const root = document.getElementById('bkcoeff_0');\n    const formatEl = root.querySelector('.js-format');\n    const oddsEl = root.querySelector('.js-odds');\n    const stakeEl = root.querySelector('.js-stake');\n    const payoutEl = root.querySelector('.js-payout');\n    const profitEl = root.querySelector('.js-profit');\n    const probEl = root.querySelector('.js-probability');\n    const resetBtn = root.querySelector('.js-reset');\n\n    function update() {\n        const format = formatEl.value;\n        const decimal = convertToDecimal(oddsEl.value.trim(), format);\n        const stake = parseFloat(stakeEl.value);\n\n        if (oddsEl.value.trim() \u0026\u0026 decimal === null) { oddsEl.classList.add('invalid'); }\n        else { oddsEl.classList.remove('invalid'); }\n\n        if (!decimal || !stake || stake \u003c= 0) {\n            payoutEl.textContent = '-';\n            profitEl.textContent = '-';\n            probEl.textContent = decimal ? (100 / decimal).toFixed(2) + '%' : '-';\n            return;\n        }\n\n        const payout = decimal * stake;\n        const profit = payout - stake;\n        payoutEl.textContent = formatNumber(payout);\n        profitEl.textContent = formatNumber(profit);\n        probEl.textContent = (100 / decimal).toFixed(2) + '%';\n    }\n\n    formatEl.addEventListener('change', function() {\n        oddsEl.placeholder = getOddsPlaceholder(formatEl.value);\n        update();\n    });\n    [oddsEl, stakeEl].forEach(el =\u003e el.addEventListener('input', update));\n\n    resetBtn.addEventListener('click', function() {\n        oddsEl.value = ''; stakeEl.value = '';\n        formatEl.selectedIndex = 0;\n        oddsEl.classList.remove('invalid');\n        payoutEl.textContent = '-'; profitEl.textContent = '-'; probEl.textContent = '-';\n    });\n})();\n\u003c/script\u003e\n\n\u003ch2 id=\"什么是投注赔率计算器\"\u003e什么是投注赔率计算器？\u003c/h2\u003e\n\u003cp\u003e投注赔率计算器帮助您：\u003c/p\u003e","title":"投注赔率计算器 - 计算派彩和隐含概率"},{"content":" 亚洲盘口计算器 步骤1：选择赔率格式 小数 香港 马来 印尼 步骤2：输入投注详情 投注金额 您要投注的金额 赔率 您的博彩公司赔率 步骤3：选择让球盘口 -2.5 -2.25 -2 -1.75 -1.5 -1.25 -1 -0.75 -0.5 -0.25 0 +0.25 +0.5 +0.75 +1 +1.25 +1.5 +1.75 +2 +2.25 +2.5 点击选择让球值 选择一个让球盘口以查看说明。 结果 如果您的球队获胜 赢 潜在派彩 — 利润 — 赢半盘情况 半赢 潜在派彩 — 利润 — 如果比赛平局 无效 潜在派彩 — 利润 — 输半盘情况 半输 潜在派彩 — 利润 — 如果您的球队输球 输 潜在派彩 — 利润 — 重置 什么是亚洲盘口投注？ 亚洲盘口（AH）是一种消除平局选项的投注形式，通过给一支球队虚拟的领先优势（或劣势）。它起源于印度尼西亚，已成为全球足球投注的热门方式。\n主要特点 特点 传统投注 亚洲盘口 可能结果 3种（赢/平/输） 2种（赢/输） 平局结果 单独结果 退款或分注 价值 较高利润率 较低利润率 复杂度 简单 更复杂 为什么使用亚洲盘口？ 更好的赔率 - 博彩公司利润率更低 无平局 - 减少到两种结果 更多选择 - 精细调整您的位置 部分退款 - 四分之一线提供保险 亚洲盘口类型 整球让分（0、-1、+1、-2等） 如果结果恰好匹配让分，您的投注金额退还（走水）。\n示例：球队A -1（一球让分）\n实际比分 让分后 投注结果 球队A 3-1获胜 2-1 赢 球队A 2-1获胜 1-1 走水（退还投注） 球队A 1-0获胜 0-0 走水（退还投注） 平局1-1 0-1 输 球队B获胜 输更多 输 半球让分（-0.5、+0.5、-1.5、+1.5等） 不可能走水 - 明确的输赢结果。\n示例：球队A -1.5\n实际比分 让分后 投注结果 球队A 3-0获胜 1.5-0 赢 球队A 2-0获胜 0.5-0 赢 球队A 2-1获胜 0.5-1 输 其他情况 落后 输 四分之一球让分（-0.25、+0.75、-1.25等） 您的投注金额平均分配到两个相邻让分。\n示例：球队A -0.75（分注在-0.5和-1）\n实际比分 -0.5注 -1注 综合结果 球队A 2-0获胜 赢 赢 全赢 球队A 1-0获胜 赢 走水 半赢 平局0-0 输 输 全输 如何使用计算器 步骤1：选择赔率格式 选择您偏好的格式：\n小数 (1.90, 2.10) - 欧洲标准 香港 (0.90, 1.10) - 只显示利润 马来 (0.90, -0.90) - 混合格式 印尼 (0.90, -1.10) - 类似马来 步骤2：输入投注金额 输入您想投注的金额。\n步骤3：输入赔率 输入博彩公司提供的赔率。\n步骤4：选择让分 点击您要投注的让分线（-2.5到+2.5）。\n步骤5：查看所有情况 计算器显示：\n全赢 - 派彩和利润 半赢 - 派彩和利润（四分之一线） 走水 - 退还投注（整球线） 半输 - 部分损失（四分之一线） 全输 - 全部损失 赔率格式转换 理解不同格式 小数 香港 马来 印尼 1.50 0.50 0.50 -2.00 1.80 0.80 0.80 -1.25 1.90 0.90 0.90 -1.11 2.00 1.00 1.00 1.00 2.10 1.10 -0.91 1.10 2.50 1.50 -0.67 1.50 3.00 2.00 -0.50 2.00 转换公式 香港转小数：\n小数 = 香港 + 1 马来转小数：\n如果马来 ≥ 0：小数 = 马来 + 1 如果马来 \u0026lt; 0：小数 = 1 - (1/马来) 印尼转小数：\n如果印尼 ≥ 0：小数 = 印尼 + 1 如果印尼 \u0026lt; 0：小数 = 1 - (1/印尼) 亚洲盘口示例 示例1：整球让分 投注： ¥100投注曼城-1，赔率1.90\n曼城结果 让分后 结果 派彩 赢2球以上 正数 赢 ¥190 赢1球 零 走水 ¥100 平或输 负数 输 ¥0 示例2：半球让分 投注： ¥100投注利物浦-1.5，赔率2.10\n利物浦结果 让分后 结果 派彩 赢2球以上 正数 赢 ¥210 赢1球 -0.5 输 ¥0 平或输 负数 输 ¥0 示例3：四分之一球让分 投注： ¥100投注阿森纳-0.75，赔率1.95\n分成：\n¥50投注阿森纳-0.5，赔率1.95 ¥50投注阿森纳-1，赔率1.95 阿森纳结果 -0.5注 -1注 总回报 赢2球以上 赢（¥97.50） 赢（¥97.50） ¥195 赢1球 赢（¥97.50） 走水（¥50） ¥147.50 平局 输（¥0） 输（¥0） ¥0 半赢计算：\n回报 = (投注额/2 × 赔率) + (投注额/2) 回报 = (¥50 × 1.95) + ¥50 = ¥147.50 利润 = ¥47.50 示例4：正数让分 投注： ¥100投注冷门+1.5，赔率1.85\n冷门结果 让分后 结果 派彩 赢 +1.5球以上 赢 ¥185 平局 +1.5球 赢 ¥185 输1球 +0.5 赢 ¥185 输2球以上 负数 输 ¥0 常见亚洲盘口线 足球让分指南 让分 含义 使用场景 0（让平） 平局退款 轻微热门，想要平局保险 -0.25 一半0，一半-0.5 小热门 -0.5 必须赢 中等热门 -0.75 一半-0.5，一半-1 明显热门 -1 赢2球+，赢1球走水 强热门 -1.5 赢2球+ 非常强热门 +0.5 赢或平 中等冷门 +1 输1球=走水 有进球保险的冷门 让分选择策略 比赛类型 典型让分范围 势均力敌 0，±0.25，±0.5 轻微热门 -0.5到-1 明显热门 -1到-1.5 大热门 -1.5到-2.5 大冷门 +1.5到+2.5 亚洲盘口 vs 欧洲盘口 特点 亚洲盘口 欧洲盘口 平局选项 消除 仍存在 部分结果 有（四分之一线） 无 可能走水 有（整球线） 无 赔率 通常更好 较高利润率 复杂度 较高 较低 何时选择亚洲盘口 想要更好的赔率 - 较低利润率 想要平局保护 - 使用0，±0.25 想要部分保险 - 使用四分之一线 投注热门 - 更灵活的线 计算亚洲盘口价值 找出价值 价值 = (您的概率 × 小数赔率) - 1 示例：\n您估计球队A有60%的机会赢2球以上 亚洲盘口-1.5赔率：2.10 价值 = (0.60 × 2.10) - 1 = 0.26 = +26% 如果您的概率估计准确，这是价值投注。\n比较不同线 始终比较不同让分选项：\n让分 赔率 盈亏平衡% -1 1.90 52.6% -1.25 2.05 48.8% -1.5 2.20 45.5% 选择您有最大优势的线。\n亚洲盘口投注策略 策略1：让平（0让分） 对热门最安全的选项。如果比赛平局，退还投注。\n最适合： 投注可能平局的热门。\n策略2：四分之一线保险 使用-0.25或-0.75获得部分保护。\n示例： -0.75给您：\n赢2球以上全赢 赢1球半赢 平局或输全输 策略3：正数让分价值 用让分投注冷门通常提供价值。\n示例： 获得+1.5的球队只需要避免输2球以上。\n策略4：滚球亚洲盘口 比赛中盘口会变动。在以下情况寻找价值：\n早期进球改变让分 红牌影响比赛 控球优势未反映在比分上 常见错误 错误1：混淆整球线和半球线 -1让分： 恰好赢1球 = 走水 -1.5让分： 恰好赢1球 = 输 解决方案： 始终检查是否有走水情况。\n错误2：忽略四分之一线 四分之一线提供整球/半球线没有的部分保护。\n解决方案： 考虑用-0.75代替-1获得一些保险。\n错误3：不比较不同线 不同博彩公司提供不同的让分线。\n解决方案： 寻找最佳线，不仅仅是最佳赔率。\n错误4：误解正数让分 +1不意味着您的球队会进球。这是虚拟的领先优势。\n解决方案： 关注胜负差距，而不是绝对结果。\n常见问题 亚洲盘口平局时会怎样？ 取决于让分。0（让平）时退还投注。-0.5时您输。-0.25时您输一半，拿回一半。+0.5时您赢。亚洲盘口消除了平局作为单独的投注结果。\n什么是四分之一球让分？ 四分之一球让分（-0.25、-0.75、-1.25等）将您的投注分配到两个相邻让分。例如，-0.75分在-0.5和-1之间。这创造四种可能结果：全赢、半赢、半输和全输。\n为什么亚洲盘口赔率更好？ 亚洲盘口市场通常有较低的博彩公司利润率（2-4%），相比传统1X2市场（5-10%）。这是因为亚盘受精明玩家和大额交易者欢迎，迫使博彩公司提供有竞争力的赔率。\n+0亚洲盘口是什么意思？ +0（也叫让平或DNB）意味着如果比赛平局，您的投注退还。只有当您的球队赢时您才赢。本质上是从等式中移除平局，同时投注一支球队获胜。\n如何计算半赢回报？ 对于半赢：回报 = (投注额/2 × 赔率) + (投注额/2)。对于半输：回报 = 投注额/2。这是因为四分之一线将您的投注分配到两个相邻让分。\n亚洲盘口只适用于足球吗？ 虽然在足球中最受欢迎，亚洲盘口也用于篮球、网球、电子竞技和其他运动。这个概念适用于任何可以衡量胜负差距的运动。\n开始计算亚洲盘口 使用上面的免费亚洲盘口计算器：\n选择您的赔率格式（小数、香港、马来、印尼） 输入您的投注金额 输入博彩公司的赔率 选择让分线 即时查看所有可能结果 计算器显示全赢、半赢、走水、半输和全输情况的确切派彩和利润。\n专业提示： 当您想对接近的结果获得部分保险时，使用四分之一线（-0.25、-0.75）。它们在赔率上稍微贵一点，但保护您免受特定差距结果的影响。\n","permalink":"https://calculators-odds.com/zh/asian-handicap-calculator/","summary":"\u003cstyle\u003e\n.asian {\n    margin: 15px 0;\n    background-color: #1e2328;\n    border-radius: 8px;\n    padding: 20px;\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n    color: #e8e8e8;\n}\n\n.asian__title {\n    font-size: 22px;\n    font-weight: bold;\n    text-align: center;\n    margin-bottom: 25px;\n    color: #e8e8e8;\n}\n\n.asian__section {\n    background: #2d333b;\n    border-radius: 6px;\n    padding: 15px;\n    margin-bottom: 15px;\n}\n\n.asian__section-title {\n    font-size: 14px;\n    font-weight: 600;\n    color: #4CAF50;\n    margin-bottom: 15px;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n}\n\n.asian__format-selector {\n    display: flex;\n    gap: 8px;\n    flex-wrap: wrap;\n}\n\n.asian__format-btn {\n    flex: 1;\n    min-width: 80px;\n    padding: 10px 12px;\n    border: 2px solid #4CAF50;\n    background: transparent;\n    color: #e8e8e8;\n    cursor: pointer;\n    border-radius: 4px;\n    font-size: 13px;\n    font-weight: 500;\n    transition: all 0.2s;\n}\n\n.asian__format-btn:hover {\n    background: rgba(76, 175, 80, 0.2);\n}\n\n.asian__format-btn.active {\n    background: #4CAF50;\n    color: #fff;\n}\n\n.asian__row {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 15px;\n}\n\n.asian__input-group {\n    display: flex;\n    flex-direction: column;\n    gap: 5px;\n}\n\n.asian__label {\n    font-size: 13px;\n    color: rgba(232, 232, 232, 0.8);\n}\n\n.asian__input {\n    width: 100%;\n    padding: 12px;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 4px;\n    font-size: 16px;\n    background: #2d333b;\n    color: #e8e8e8;\n    transition: border-color 0.2s;\n    box-sizing: border-box;\n}\n\n.asian__input:focus {\n    outline: none;\n    border-color: #4CAF50;\n}\n\n.asian__input::placeholder {\n    color: rgba(232, 232, 232, 0.4);\n}\n\n.asian__hint {\n    font-size: 11px;\n    color: rgba(232, 232, 232, 0.5);\n    margin-top: 8px;\n}\n\n.asian__handicap-grid {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    gap: 6px;\n}\n\n.asian__handicap-btn {\n    padding: 8px 4px;\n    border: 1px solid rgba(255, 255, 255, 0.2);\n    background: rgba(0, 0, 0, 0.2);\n    color: #e8e8e8;\n    cursor: pointer;\n    border-radius: 4px;\n    font-size: 12px;\n    font-weight: 500;\n    transition: all 0.2s;\n}\n\n.asian__handicap-btn:hover {\n    border-color: #2196F3;\n    background: rgba(33, 150, 243, 0.2);\n}\n\n.asian__handicap-btn.active {\n    background: #2196F3;\n    border-color: #2196F3;\n    color: #fff;\n}\n\n.asian__handicap-btn.positive {\n    border-color: rgba(76, 175, 80, 0.4);\n}\n\n.asian__handicap-btn.negative {\n    border-color: rgba(244, 67, 54, 0.4);\n}\n\n.asian__explanation {\n    margin-top: 15px;\n    padding: 12px;\n    background: rgba(33, 150, 243, 0.1);\n    border: 1px solid rgba(33, 150, 243, 0.3);\n    border-radius: 4px;\n    font-size: 13px;\n    line-height: 1.5;\n}\n\n.asian__scenarios {\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n}\n\n.asian__scenario {\n    background: rgba(0, 0, 0, 0.2);\n    border-radius: 4px;\n    padding: 12px;\n    display: none;\n}\n\n.asian__scenario.visible {\n    display: block;\n}\n\n.asian__scenario-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    margin-bottom: 8px;\n}\n\n.asian__scenario-title {\n    font-size: 13px;\n    font-weight: 600;\n    color: rgba(232, 232, 232, 0.9);\n}\n\n.asian__scenario-result {\n    font-size: 12px;\n    font-weight: 600;\n    padding: 4px 10px;\n    border-radius: 3px;\n}\n\n.asian__scenario-result.win {\n    background: rgba(76, 175, 80, 0.2);\n    color: #4CAF50;\n}\n\n.asian__scenario-result.lose {\n    background: rgba(244, 67, 54, 0.2);\n    color: #f44336;\n}\n\n.asian__scenario-result.half-win {\n    background: rgba(139, 195, 74, 0.2);\n    color: #8BC34A;\n}\n\n.asian__scenario-result.half-lose {\n    background: rgba(255, 152, 0, 0.2);\n    color: #ff9800;\n}\n\n.asian__scenario-result.push {\n    background: rgba(158, 158, 158, 0.2);\n    color: #9e9e9e;\n}\n\n.asian__scenario-values {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 10px;\n}\n\n.asian__scenario-item {\n    display: flex;\n    flex-direction: column;\n    gap: 2px;\n}\n\n.asian__scenario-label {\n    font-size: 10px;\n    color: rgba(232, 232, 232, 0.6);\n    text-transform: uppercase;\n}\n\n.asian__scenario-value {\n    font-size: 16px;\n    font-weight: 700;\n}\n\n.asian__scenario-value.positive {\n    color: #4CAF50;\n}\n\n.asian__scenario-value.negative {\n    color: #f44336;\n}\n\n.asian__scenario-value.neutral {\n    color: #9e9e9e;\n}\n\n.asian__buttons {\n    display: flex;\n    justify-content: center;\n    margin-top: 15px;\n}\n\n.asian__btn {\n    padding: 10px 30px;\n    border: none;\n    border-radius: 4px;\n    font-size: 14px;\n    font-weight: 500;\n    cursor: pointer;\n    transition: all 0.2s;\n}\n\n.asian__btn--secondary {\n    background: #666;\n    color: #fff;\n}\n\n.asian__btn--secondary:hover {\n    background: #555;\n}\n\n@media (max-width: 600px) {\n    .asian__row {\n        grid-template-columns: 1fr;\n    }\n\n    .asian__handicap-grid {\n        grid-template-columns: repeat(5, 1fr);\n    }\n\n    .asian__format-btn {\n        min-width: 70px;\n        font-size: 12px;\n    }\n\n    .asian__scenario-values {\n        grid-template-columns: 1fr;\n    }\n}\n\u003c/style\u003e\n\n\u003cdiv class=\"asian\"\u003e\n    \u003cdiv class=\"asian__title\"\u003e亚洲盘口计算器\u003c/div\u003e\n\n    \u003cdiv class=\"asian__section\"\u003e\n        \u003cdiv class=\"asian__section-title\"\u003e步骤1：选择赔率格式\u003c/div\u003e\n        \u003cdiv class=\"asian__format-selector\"\u003e\n            \u003cbutton type=\"button\" class=\"asian__format-btn active\" data-type=\"decimal\"\u003e小数\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__format-btn\" data-type=\"hongkong\"\u003e香港\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__format-btn\" data-type=\"malay\"\u003e马来\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__format-btn\" data-type=\"indonesian\"\u003e印尼\u003c/button\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"asian__section\"\u003e\n        \u003cdiv class=\"asian__section-title\"\u003e步骤2：输入投注详情\u003c/div\u003e\n        \u003cdiv class=\"asian__row\"\u003e\n            \u003cdiv class=\"asian__input-group\"\u003e\n                \u003clabel class=\"asian__label\"\u003e投注金额\u003c/label\u003e\n                \u003cinput type=\"text\" class=\"asian__input asian__stake\" placeholder=\"100\"\u003e\n                \u003cspan class=\"asian__hint\"\u003e您要投注的金额\u003c/span\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"asian__input-group\"\u003e\n                \u003clabel class=\"asian__label\"\u003e赔率\u003c/label\u003e\n                \u003cinput type=\"text\" class=\"asian__input asian__odds\" placeholder=\"1.90\"\u003e\n                \u003cspan class=\"asian__hint\"\u003e您的博彩公司赔率\u003c/span\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"asian__section\"\u003e\n        \u003cdiv class=\"asian__section-title\"\u003e步骤3：选择让球盘口\u003c/div\u003e\n        \u003cdiv class=\"asian__handicap-grid\"\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-2.5\"\u003e-2.5\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-2.25\"\u003e-2.25\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-2\"\u003e-2\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-1.75\"\u003e-1.75\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-1.5\"\u003e-1.5\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-1.25\"\u003e-1.25\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-1\"\u003e-1\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-0.75\"\u003e-0.75\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-0.5\"\u003e-0.5\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn negative\" data-handicap=\"-0.25\"\u003e-0.25\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn active\" data-handicap=\"0\"\u003e0\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+0.25\"\u003e+0.25\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+0.5\"\u003e+0.5\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+0.75\"\u003e+0.75\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+1\"\u003e+1\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+1.25\"\u003e+1.25\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+1.5\"\u003e+1.5\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+1.75\"\u003e+1.75\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+2\"\u003e+2\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+2.25\"\u003e+2.25\u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"asian__handicap-btn positive\" data-handicap=\"+2.5\"\u003e+2.5\u003c/button\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"asian__hint\"\u003e点击选择让球值\u003c/div\u003e\n        \u003cdiv class=\"asian__explanation\" id=\"asianExplanation\"\u003e\n            选择一个让球盘口以查看说明。\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"asian__section\"\u003e\n        \u003cdiv class=\"asian__section-title\"\u003e结果\u003c/div\u003e\n        \u003cdiv class=\"asian__scenarios\"\u003e\n            \u003cdiv class=\"asian__scenario visible\" id=\"asianWin\"\u003e\n                \u003cdiv class=\"asian__scenario-header\"\u003e\n                    \u003cspan class=\"asian__scenario-title\" id=\"asianWinTitle\"\u003e如果您的球队获胜\u003c/span\u003e\n                    \u003cspan class=\"asian__scenario-result win\"\u003e赢\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"asian__scenario-values\"\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003e潜在派彩\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value\" id=\"asianWinPayout\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003e利润\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value positive\" id=\"asianWinProfit\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"asian__scenario\" id=\"asianHalfWin\"\u003e\n                \u003cdiv class=\"asian__scenario-header\"\u003e\n                    \u003cspan class=\"asian__scenario-title\" id=\"asianHalfWinTitle\"\u003e赢半盘情况\u003c/span\u003e\n                    \u003cspan class=\"asian__scenario-result half-win\"\u003e半赢\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"asian__scenario-values\"\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003e潜在派彩\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value\" id=\"asianHalfWinPayout\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003e利润\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value positive\" id=\"asianHalfWinProfit\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"asian__scenario\" id=\"asianDraw\"\u003e\n                \u003cdiv class=\"asian__scenario-header\"\u003e\n                    \u003cspan class=\"asian__scenario-title\" id=\"asianDrawTitle\"\u003e如果比赛平局\u003c/span\u003e\n                    \u003cspan class=\"asian__scenario-result push\"\u003e无效\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"asian__scenario-values\"\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003e潜在派彩\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value\" id=\"asianDrawPayout\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003e利润\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value neutral\" id=\"asianDrawProfit\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"asian__scenario\" id=\"asianHalfLose\"\u003e\n                \u003cdiv class=\"asian__scenario-header\"\u003e\n                    \u003cspan class=\"asian__scenario-title\" id=\"asianHalfLoseTitle\"\u003e输半盘情况\u003c/span\u003e\n                    \u003cspan class=\"asian__scenario-result half-lose\"\u003e半输\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"asian__scenario-values\"\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003e潜在派彩\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value\" id=\"asianHalfLosePayout\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003e利润\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value negative\" id=\"asianHalfLoseProfit\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"asian__scenario visible\" id=\"asianLose\"\u003e\n                \u003cdiv class=\"asian__scenario-header\"\u003e\n                    \u003cspan class=\"asian__scenario-title\" id=\"asianLoseTitle\"\u003e如果您的球队输球\u003c/span\u003e\n                    \u003cspan class=\"asian__scenario-result lose\"\u003e输\u003c/span\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"asian__scenario-values\"\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003e潜在派彩\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value\" id=\"asianLosePayout\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"asian__scenario-item\"\u003e\n                        \u003cspan class=\"asian__scenario-label\"\u003e利润\u003c/span\u003e\n                        \u003cspan class=\"asian__scenario-value negative\" id=\"asianLoseProfit\"\u003e—\u003c/span\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"asian__buttons\"\u003e\n        \u003cbutton type=\"button\" class=\"asian__btn asian__btn--secondary\" id=\"asianReset\"\u003e重置\u003c/button\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n(function() {\n    const container = document.currentScript.previousElementSibling;\n    let currentOddsType = 'decimal';\n    let currentHandicap = 0;\n\n    function toDecimalOdds(value, type) {\n        const num = parseFloat(value);\n        if (isNaN(num)) return null;\n\n        switch(type) {\n            case 'decimal':\n                return num \u003e 1 ? num : null;\n            case 'hongkong':\n                return num + 1;\n            case 'malay':\n                return num \u003e= 0 ? num + 1 : 1 - (1 / num);\n            case 'indonesian':\n                return num \u003e= 0 ? num + 1 : 1 - (1 / num);\n            default:\n                return num;\n        }\n    }\n\n    function isQuarterHandicap(h) {\n        return h % 0.5 !== 0 \u0026\u0026 h % 0.25 === 0;\n    }\n\n    function isWholeHandicap(h) {\n        return h % 1 === 0;\n    }\n\n    function getExplanation(h) {\n        if (h === 0) {\n            return '0（平局退款）：您的球队必须获胜才能赢。如果比赛平局，退还您的投注额。如果您的球队输球，您将失去投注额。';\n        }\n\n        if (isQuarterHandicap(h)) {\n            if (h \u003e 0) {\n                return `\u003cstrong\u003e${h \u003e 0 ? '+' : ''}${h} handicap:\u003c/strong\u003e Your bet is split between ${h - 0.25} and ${h + 0.25}. Your team starts with a ${h} goal advantage. Half-win or half-lose possible.`;\n            } else {\n                return `\u003cstrong\u003e${h} handicap:\u003c/strong\u003e Your bet is split between ${h - 0.25} and ${h + 0.25}. Your team must overcome a ${Math.abs(h)} goal deficit. Half-win or half-lose possible.`;\n            }\n        }\n\n        if (h % 1 === 0.5 || h % 1 === -0.5) {\n            if (h \u003e 0) {\n                return `\u003cstrong\u003e+${h} handicap:\u003c/strong\u003e Your team starts with a ${h} goal head start. No draws possible - clear win or lose result only.`;\n            } else {\n                return `\u003cstrong\u003e${h} handicap:\u003c/strong\u003e Your team must win by more than ${Math.abs(h)} goals. No draws possible - clear win or lose.`;\n            }\n        }\n\n        if (isWholeHandicap(h)) {\n            if (h \u003e 0) {\n                return `\u003cstrong\u003e+${h} handicap:\u003c/strong\u003e Your team starts with ${h} goal(s) advantage. If the adjusted result is a draw, stake is returned (push).`;\n            } else {\n                return `\u003cstrong\u003e${h} handicap:\u003c/strong\u003e Your team must win by more than ${Math.abs(h)} goal(s). Exact match returns stake (push).`;\n            }\n        }\n\n        return \"Select a handicap to see explanation.\";\n    }\n\n    function calculate() {\n        const stake = parseFloat(container.querySelector('.asian__stake').value) || 0;\n        const oddsInput = container.querySelector('.asian__odds').value;\n        const decimalOdds = toDecimalOdds(oddsInput, currentOddsType);\n        const h = parseFloat(currentHandicap);\n\n        container.querySelector('#asianExplanation').innerHTML = getExplanation(h);\n\n        const isQuarter = isQuarterHandicap(h);\n        const isWhole = isWholeHandicap(h);\n        const isHalf = h % 1 === 0.5 || h % 1 === -0.5;\n\n        \n        container.querySelector('#asianWin').classList.add('visible');\n        container.querySelector('#asianLose').classList.add('visible');\n        container.querySelector('#asianDraw').classList.toggle('visible', isWhole || h === 0);\n        container.querySelector('#asianHalfWin').classList.toggle('visible', isQuarter);\n        container.querySelector('#asianHalfLose').classList.toggle('visible', isQuarter);\n\n        \n        if (h === 0) {\n            container.querySelector('#asianWinTitle').textContent = '如果您的球队获胜';\n            container.querySelector('#asianDrawTitle').textContent = '如果比赛平局';\n            container.querySelector('#asianLoseTitle').textContent = '如果您的球队输球';\n        } else if (h \u003e 0) {\n            container.querySelector('#asianWinTitle').textContent = `Your Team can lose by less than ${Math.abs(h)}`;\n            if (isWhole) container.querySelector('#asianDrawTitle').textContent = `If Your Team loses by exactly ${Math.abs(h)}`;\n            container.querySelector('#asianLoseTitle').textContent = `If Your Team loses by more than ${Math.abs(h)}`;\n        } else {\n            container.querySelector('#asianWinTitle').textContent = `If Your Team wins by more than ${Math.abs(h)}`;\n            if (isWhole) container.querySelector('#asianDrawTitle').textContent = `If Your Team wins by exactly ${Math.abs(h)}`;\n            container.querySelector('#asianLoseTitle').textContent = `Your Team wins by less than ${Math.abs(h)} or loses`;\n        }\n\n        if (isQuarter) {\n            if (h \u003e 0) {\n                container.querySelector('#asianHalfWinTitle').textContent = `If Your Team loses by ${Math.floor(Math.abs(h))}`;\n                container.querySelector('#asianHalfLoseTitle').textContent = `If Your Team loses by ${Math.ceil(Math.abs(h))}`;\n            } else {\n                container.querySelector('#asianHalfWinTitle').textContent = `If Your Team wins by ${Math.ceil(Math.abs(h))}`;\n                container.querySelector('#asianHalfLoseTitle').textContent = `If Your Team wins by ${Math.floor(Math.abs(h))}`;\n            }\n        }\n\n        if (!decimalOdds || stake \u003c= 0) {\n            ['Win', 'Draw', 'HalfWin', 'HalfLose', 'Lose'].forEach(type =\u003e {\n                container.querySelector(`#asian${type}Payout`).textContent = '—';\n                container.querySelector(`#asian${type}Profit`).textContent = '—';\n            });\n            return;\n        }\n\n        const profit = stake * (decimalOdds - 1);\n\n        \n        container.querySelector('#asianWinPayout').textContent = '$' + (stake + profit).toFixed(2);\n        container.querySelector('#asianWinProfit').textContent = '+$' + profit.toFixed(2);\n\n        \n        container.querySelector('#asianLosePayout').textContent = '$0.00';\n        container.querySelector('#asianLoseProfit').textContent = '-$' + stake.toFixed(2);\n\n        \n        if (isWhole || h === 0) {\n            container.querySelector('#asianDrawPayout').textContent = '$' + stake.toFixed(2);\n            container.querySelector('#asianDrawProfit').textContent = '$0.00';\n        }\n\n        \n        if (isQuarter) {\n            const halfProfit = profit / 2;\n            const halfLoss = stake / 2;\n\n            container.querySelector('#asianHalfWinPayout').textContent = '$' + (stake + halfProfit).toFixed(2);\n            container.querySelector('#asianHalfWinProfit').textContent = '+$' + halfProfit.toFixed(2);\n\n            container.querySelector('#asianHalfLosePayout').textContent = '$' + (stake - halfLoss).toFixed(2);\n            container.querySelector('#asianHalfLoseProfit').textContent = '-$' + halfLoss.toFixed(2);\n        }\n    }\n\n    function reset() {\n        container.querySelector('.asian__stake').value = '';\n        container.querySelector('.asian__odds').value = '';\n\n        container.querySelectorAll('.asian__handicap-btn').forEach(btn =\u003e {\n            btn.classList.remove('active');\n            if (btn.dataset.handicap === '0') btn.classList.add('active');\n        });\n        currentHandicap = 0;\n\n        calculate();\n    }\n\n    \n    container.querySelectorAll('.asian__format-btn').forEach(btn =\u003e {\n        btn.addEventListener('click', function() {\n            container.querySelectorAll('.asian__format-btn').forEach(b =\u003e b.classList.remove('active'));\n            this.classList.add('active');\n            currentOddsType = this.dataset.type;\n            calculate();\n        });\n    });\n\n    container.querySelectorAll('.asian__handicap-btn').forEach(btn =\u003e {\n        btn.addEventListener('click', function() {\n            container.querySelectorAll('.asian__handicap-btn').forEach(b =\u003e b.classList.remove('active'));\n            this.classList.add('active');\n            currentHandicap = this.dataset.handicap;\n            calculate();\n        });\n    });\n\n    container.querySelector('.asian__stake').addEventListener('input', calculate);\n    container.querySelector('.asian__odds').addEventListener('input', calculate);\n    container.querySelector('#asianReset').addEventListener('click', reset);\n\n    calculate();\n})();\n\u003c/script\u003e\n\n\u003ch2 id=\"什么是亚洲盘口投注\"\u003e什么是亚洲盘口投注？\u003c/h2\u003e\n\u003cp\u003e亚洲盘口（AH）是一种\u003cstrong\u003e消除平局选项\u003c/strong\u003e的投注形式，通过给一支球队虚拟的领先优势（或劣势）。它起源于印度尼西亚，已成为全球足球投注的热门方式。\u003c/p\u003e","title":"亚洲盘口计算器 - 四分之一球和半球让分派彩"}]