Что такое свойства *C*, *E* и *S* в возвращаемом объекте вызова сообщения?

(ЯС)

 var contract = web3.eth.contract(abiDefinition).at(address);
     contract.test(value, gotResult);
     function gotResult(error, result) {
            if(!error) {
                console.log(error);
            }
            else {
                console.log(result);
            }                               
    }

(СОЛ)

 contract A {
     function test(uint8 x) constant returns(uint8) {
         return x + 10;
     }
  }

(БРАУЗЕР)

введите описание изображения здесь

Ответы (1)

result— это объект BigNumber , который преобразуется в нечто вроде { [String: '5'] s: 1, e: 0, c: [ 5 ] }. Вы можете использовать методы BigNumber, result.toNumber()чтобы лучше видеть.

Когда используются целые числа, web3.js использует BigNumber, потому что собственные числа Javascript недостаточно велики.

Здесь нет смысла углубляться во внутренности общей внешней библиотеки, такой как BigNumber.

Главное, что помогает, — это понять, что когда вы получаете объект, похожий на него, это, вероятно, BigNumber , и вы можете вызывать для него методы, а также выполнять другие дополнительные операции BigNumber (без необходимости знать его внутренности).

Что означает S, C, E?
@quantumpotato Согласно репозиторию BigNumber , S означает знак, E — показатель степени, а C — коэффициент (или мантиссу).