如何转换 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
函数输出。
我一直在关注有关 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
函数输出。