请大家帮我先一个算法!!

来源:百度知道 编辑:UC知道 时间:2024/06/10 18:49:03
x=1103.39
y=-3262.78

x=1666.51
y=-4426.20
用什么好算法呢?
XY同时便
放到一个循环里面每次变动0.5以下
我是想XY两个值几乎同时到目标值...而却精确!!
因为没循环一次要网内存写一次值!

就是游戏的坐标移动...我不能先移动X在移动Y的这样就绕远了

可不可以问一下你这么做的意义何在?浮点数循环很难精确,循环次数越多误差积累越大。可以的话把题目要求发上来,也许有其他更好的替代方法。

如果你不是特别在乎效率的话可以试试这个:

double x=1103.39,y=-3262.78,xdst=1666.51,ydst=-4426.20;
double xrate,yrate;
do{
yrate=(ydst-y)/(xdst-x);
xrate=1.0;
while(xrate>=0.5||yrate>=0.5){
xrate/=2.0;
yrate/=2.0;
}
x+=xrate;
y+=yrate;
}while(x<xdst&&y<dst);
x=xdst;
y=ydst;

这个算法会自己决定每一次递曾的值,并且进行不断的修正,尽可能保证值的准确性,但浮点数的运算依然没法让他能够准确达到目标值,所以要在循环结束的时候赋予他们最终值。

目前还没看出什么关系,在已知结果的情况下我写了一个算法,但应该不正确
void main()
{
double x=1103.39,y=-3262.78;
int i=1;
for(;i<=2001;i++){
x+=0.01;
y-=0.31;
}
for(i=1;i<=54311;i++){
x+=0.01;
y-=0.01;
}
}

while(x <= 1666.51 || y >= -4426.20)
{
x += 0.01;
if(x == 1666.51)
x -= 0.01;
y -= 0.01;
}

#include<math.h>
void main()
{
float x,y;
for(x=1103.39,y=-326