2013-05-26
展开全部
功能:浮点数转换成int值DWORD Standard_C_Float_To_Dword(DWORD C_Float,int DecimalPoint)
{
DWORD TempA;
DWORD Exp;
DWORD MinusSign;
DWORD i;
double TempB;
MinusSign=0;
if(C_Float&0x80000000) MinusSign=1;//为负数
Exp=C_Float&0x7F800000;
Exp>>=23; //阶码E
if(Exp<100)
return 0;
if(Exp>200)
return 0x7FFFFFFF;
C_Float&=0x7FFFFF; //此时IU.UI为尾数M
C_Float+=0x800000; //2的23次方
TempA=TempB=1;
if(DecimalPoint>0)
{
for(i=0;i<DecimalPoint;i++)TempA*=10;
if(Exp<150)
{
for(i=0;i<(150-Exp);i++)TempB*=2;
C_Float=(double)C_Float*(double)TempA/TempB;
}
else
{
for(i=0;i<(Exp-150);i++)TempB*=2;
C_Float=(double)C_Float*(double)TempA*TempB;
}
}
else
{
DecimalPoint=DecimalPoint^0xFFFFFFFF;
DecimalPoint++;
for(i=0;i<DecimalPoint;i++)TempA*=10;
if(Exp<150)
{
for(i=0;i<(150-Exp);i++)TempB*=2;
C_Float=(double)C_Float/(double)TempA/TempB;
}
else
{
for(i=0;i<(Exp-150);i++)TempB*=2;
C_Float=(double)C_Float*TempB/(double)TempA;
}
}
if(MinusSign) //为负数
{
C_Float^=0xFFFFFFFF;
C_Float++;
}
return C_Float;
}
谢谢采纳
{
DWORD TempA;
DWORD Exp;
DWORD MinusSign;
DWORD i;
double TempB;
MinusSign=0;
if(C_Float&0x80000000) MinusSign=1;//为负数
Exp=C_Float&0x7F800000;
Exp>>=23; //阶码E
if(Exp<100)
return 0;
if(Exp>200)
return 0x7FFFFFFF;
C_Float&=0x7FFFFF; //此时IU.UI为尾数M
C_Float+=0x800000; //2的23次方
TempA=TempB=1;
if(DecimalPoint>0)
{
for(i=0;i<DecimalPoint;i++)TempA*=10;
if(Exp<150)
{
for(i=0;i<(150-Exp);i++)TempB*=2;
C_Float=(double)C_Float*(double)TempA/TempB;
}
else
{
for(i=0;i<(Exp-150);i++)TempB*=2;
C_Float=(double)C_Float*(double)TempA*TempB;
}
}
else
{
DecimalPoint=DecimalPoint^0xFFFFFFFF;
DecimalPoint++;
for(i=0;i<DecimalPoint;i++)TempA*=10;
if(Exp<150)
{
for(i=0;i<(150-Exp);i++)TempB*=2;
C_Float=(double)C_Float/(double)TempA/TempB;
}
else
{
for(i=0;i<(Exp-150);i++)TempB*=2;
C_Float=(double)C_Float*TempB/(double)TempA;
}
}
if(MinusSign) //为负数
{
C_Float^=0xFFFFFFFF;
C_Float++;
}
return C_Float;
}
谢谢采纳
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询