如何转换 latestRoundData() 的返回值?

How can I convert the returned value from latestRoundData()?

我一直在关注有关 chainlink 文档的教程,使用 MATIC/USD 孟买测试网数据提要获取 Matic 的当前价格,函数 getLatestPrice() returns 65990700。我阅读了 latestRoundData ()returns 中的值。然后当我使用这个网站 https://polygonscan.com/unitconverter 转换它时,看看这个值对 Matic 值多少钱。我得到了 0.000000000065485509 Matic。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;

import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";

contract PriceConsumerV3 {

    AggregatorV3Interface internal priceFeed;

    /**
     * Network: Mumbai
     * Aggregator: MATIC/USD
     * Address: 0xd0D5e3DB44DE05E9F294BB0a3bEEaF030DE24Ada
     */
    constructor() {
        priceFeed = AggregatorV3Interface(0xd0D5e3DB44DE05E9F294BB0a3bEEaF030DE24Ada);
    }

    /**
     * Returns the latest price
     */
    function getLatestPrice() public view returns (int) {
        (
            /*uint80 roundID*/,
            int price,
            /*uint startedAt*/,
            /*uint timeStamp*/,
            /*uint80 answeredInRound*/
        ) = priceFeed.latestRoundData();
        return price;
    }
}

我是不是漏掉了什么?

Chainlink 美元数据馈送return 价格数据精度为 8 位小数,而不是 18 位。

如果要将数值转换为18位小数,可以在结果中加上10个零:

price * 1e10

查看指定 feed contract 上的 decimals 函数输出。