//此题实在是搞不定float的问题了,只能同乘10000来比较
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
float p,q;
scanf("%f%f",&p,&q);
p=100*p;
q=100*q;
float pmin,qmax;
for (long i=1;;i++)
{
pmin = ((long)(p*i)/10000+1)*10000;
if ((long)(q*i)%10000==0)
qmax = q*i-10000;
else qmax =(long)(q*i)/10000*10000;
if (fabs(qmax-pmin)<0.000001)
{
printf("%d/n",i);
break;
}
}
return 0;
}
本文探讨了一种通过将浮点数放大一定倍数并转为整数进行比较的方法,以此来规避浮点运算带来的误差问题。具体实现中,利用循环不断增大数值范围直至找到两个边界值相交的情况。
1622

被折叠的 条评论
为什么被折叠?



