You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将后端返回的数值与指定数字进行乘法运算?

问题描述

我有一个脚本可获取参数名称并将其数值嵌入表格(截图所示),现需将数值0.00000407与另一个数字相乘,但此前未处理过这类数据运算,急需完成该功能。

HTML代码

<div class="volume-label">Profability 100mh/24ч</div>
<div id="hashrentReward">
    <span style="color:#000000;"><strong></strong></span>
</div>

JS代码

function refreshData(){
    var xmlHttp = new XMLHttpRequest(); 

    xmlHttp.onreadystatechange = function()
    { 
        if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
        {
            console.log(xmlHttp.responseText);
            makeValuesMain(xmlHttp.responseText);
        }
        else if(xmlHttp.status != 200 && xmlHttp.status != 0)
        {
            console.log('HTTP return code is ' + xmlHttp.status);
            makeValuesMain('');
        }
    }   
    
    url = location.protocol + '//' + '' + '/api/pool';
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null); 
}

function makeValuesMain(json_string) {
    try {
        var obj = JSON.parse(json_string);
    }
    catch(e)
    {
        if(e instanceof SyntaxError) console.log(e);
        var obj = {result:{}}, n_a = '-';
        obj.result['unpaidBalance'] = n_a;
        obj.result['unconfirmedBalance'] = n_a;
        obj.result['workersOnline'] = n_a;
        obj.result['currentHashrate'] = n_a;
        obj.result['dayReward'] = n_a;
        obj.result['lastShare'] = n_a;
        obj.result['totalPaid'] = n_a;
        obj.result['blocksFound'] = n_a;
    }

    console.log(obj.result);
    drawValues(obj.result); 
}

function drawValues(values)
{
    var graphHeader = '';

    for(var key in values)
    {
        if(key == 'avgHashrate')
        {
            graphHeader = values[key];
            continue;
        }

        if(key == 'speed')
        {
            graph_data = values[key];
            continue;
        }
        var el_id = key.charAt(0) + key.slice(1),
            el = document.getElementById(el_id);

        if(typeof(el) != 'undefined' && el != null)
        {
            spans = el.getElementsByTagName('span'), 
            spans[0].innerHTML = '<b>' + values[key] + '</b>';
        }
    }
}

解决方案

假设你要计算的是接口返回的dayReward字段(即数值0.00000407),需要和指定数字相乘后显示,可按以下方式修改代码:

方式1:直接修改目标字段的显示值

在drawValues函数中,对目标字段添加乘法运算逻辑:

function drawValues(values)
{
    var graphHeader = '';
    // 替换为你需要的相乘倍数
    const multiplier = 2;

    for(var key in values)
    {
        if(key == 'avgHashrate')
        {
            graphHeader = values[key];
            continue;
        }

        if(key == 'speed')
        {
            graph_data = values[key];
            continue;
        }
        var el_id = key.charAt(0) + key.slice(1),
            el = document.getElementById(el_id);

        if(typeof(el) != 'undefined' && el != null)
        {
            let displayValue = values[key];
            // 仅对dayReward字段进行计算
            if(key === 'dayReward' && displayValue !== '-'){
                // 转换为数字并相乘,保留8位小数避免浮点数异常
                displayValue = (parseFloat(displayValue) * multiplier).toFixed(8);
            }
            spans = el.getElementsByTagName('span'), 
            spans[0].innerHTML = '<b>' + displayValue + '</b>';
        }
    }
}

方式2:将计算结果显示到hashrentReward元素中

如果需要把计算后的值单独放到页面的hashrentReward容器里,可在drawValues函数末尾添加单独处理逻辑:

function drawValues(values)
{
    var graphHeader = '';
    // 替换为你需要的相乘倍数
    const multiplier = 2;

    // 原循环逻辑保持不变
    for(var key in values)
    {
        if(key == 'avgHashrate')
        {
            graphHeader = values[key];
            continue;
        }

        if(key == 'speed')
        {
            graph_data = values[key];
            continue;
        }
        var el_id = key.charAt(0) + key.slice(1),
            el = document.getElementById(el_id);

        if(typeof(el) != 'undefined' && el != null)
        {
            spans = el.getElementsByTagName('span'), 
            spans[0].innerHTML = '<b>' + values[key] + '</b>';
        }
    }

    // 单独处理hashrentReward的计算显示
    const rewardEl = document.getElementById('hashrentReward');
    if(rewardEl && values.dayReward !== '-'){
        const calculatedReward = (parseFloat(values.dayReward) * multiplier).toFixed(8);
        const spans = rewardEl.getElementsByTagName('span');
        if(spans.length > 0){
            spans[0].innerHTML = '<b>' + calculatedReward + '</b>';
        }
    }
}

注意事项

  • 确保接口返回的dayReward是可转换为数字的格式,若为字符串需用parseFloat()转换
  • 使用toFixed(n)控制小数位数,避免浮点数运算出现精度问题
  • 根据实际需求替换multiplier变量的值

内容的提问来源于stack exchange,提问作者jade2216

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 16:10:33