Почему метод возвращает массив вместо числа или строки?

Я пытался получить данные из договора о солидности через web3 в метамаске. Я не понимаю Почему я получил массив вместо числа или строки? Может быть, вы знаете другой способ получения нормальных данных из контрактов на эфириум? Рассмотрим мой код:

let contractAddress = $("#addressContract").val();
instaceContract = web3.eth.contract(contract.abi);
contractInstance= instaceContract.at(contractAddress);

contractInstance.name.call((err, result)=>{
            if(!err){
                console.log('Name ', result)
            } else {
                console.log(err);
            }

        });

contractInstance.decimals.call((err, result)=>{
            if(!err){
                console.log('Decimals ', result)
            } else {
                console.log(err);
            }

        });

Я получил ответы: на имя:

Для десятичных дробей:

1 ответ

Это обозначение BigNumber.

Твердость использует большие числа для точности. Числа Javascript имеют математическую задачу с плавающей запятой, которая означает, что они округляются в большую или меньшую сторону, когда числа становятся очень большими или очень маленькими. Не идеально, когда эти цифры могут обозначать деньги, как они делают в солидности.

result.toNumber() должен сделать трюк для вас.

Другие вопросы по тегам