寻找 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,这样你就可以接受负数