寻找 2 个坐标之间的距离
Finding distance between 2 coordinates in solidity
据说距离等于下式:
distance = sqrt( (x2 - x1)**2 + (y2 - y1)**2 )
我在下面的函数中执行了这个精确的公式。但是,我 运行 遇到的问题是当 x2
小于 x1
时,例如,我得到一个错误,因为 uint256 不能为负数。
有谁知道我在计算距离时如何考虑这一点?
function getDistance(uint256 x1, uint256 x2, uint256 y1, uint256 y1, ) private view returns(uint256) {
return sqrt(((x2 - x1)**2) + ((y2 - y1)**2));
}
function sqrt(uint x) private pure returns (uint y) {
uint z = (x + 1) / 2;
y = x;
while (z < y) {
y = z;
z = (x / z + z) / 2;
}
}
不要使用 uint256,而是使用 int256,这样你就可以接受负数
据说距离等于下式:
distance = sqrt( (x2 - x1)**2 + (y2 - y1)**2 )
我在下面的函数中执行了这个精确的公式。但是,我 运行 遇到的问题是当 x2
小于 x1
时,例如,我得到一个错误,因为 uint256 不能为负数。
有谁知道我在计算距离时如何考虑这一点?
function getDistance(uint256 x1, uint256 x2, uint256 y1, uint256 y1, ) private view returns(uint256) {
return sqrt(((x2 - x1)**2) + ((y2 - y1)**2));
}
function sqrt(uint x) private pure returns (uint y) {
uint z = (x + 1) / 2;
y = x;
while (z < y) {
y = z;
z = (x / z + z) / 2;
}
}
不要使用 uint256,而是使用 int256,这样你就可以接受负数