预防计算的值类型

Value type preventing calculation?

本文关键字:类型 计算      更新时间:2023-10-16

我正在编写一个课程的程序,该程序简单地计算两个坐标点之间的距离(x,y)。

differenceofx1 = x1 - x2;
differenceofy1 = y1 - y2;
squareofx1 = differenceofx1 * differenceofx1;
squareofy1 = differenceofy1 * differenceofy1;
distance1 = sqrt(squareofx1 - squareofy1);

当我计算距离时,它起作用。但是,有些情况是结果是非方数字的平方根,或x1和x2/y1和y2的差异由于输入顺序为负,当距离距离时,它仅给出0.00000的距离显然是超过0。我正在为所有变量使用double,我应该使用float而代替负面的可能性,还是double可以做相同的工作?我也将精度设置为8,但我不明白为什么它不会正确计算?

我为这个问题的简单性感到抱歉,我比初学者更多。

您使用的距离公式错误它应该是distance1 = sqrt(squareofx1 squareofy1);代替distance1 = sqrt(squareOfx1 -squareofy1);由于公式错误,如果SquareOFX1小于SquareOfy1,则会出现错误,因为在实际坐标的情况下,不可能使用负数的SQRT。

首先,如@fefe所述,您的公式不正确地将其更改为 distance1 = sqrt(squareofx1 + squareofy1)。顺便说一句,您的所有计算可以用一行代码表示:

distance1 = sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));

不需要差异ofofx1 差异fightofy1 squareofx1 squareofy1 在您的程序中再次在这些变量中。

其次,,双double给您比浮子更精确。如果您需要精确度超过6-7个小数后,则需要双倍的余地也可以使用。阅读有关Float vs double

的更多信息