double类型取有效数字

 //   ======================================================  
  //   功能:   获取有效数字  
  //   参数:   dNum:   [IN]   待求有效数字的数  
  //   szSignificantDigit:   [OUT]   存放结果的空间  
  //   返回:   无  
  //   备注:   无  
  //   ======================================================  
  void  
  SignificantDigit(double   dNum,   TCHAR   szSignificantDigit[])  
  {  
  //   ===   把数字转换为字符串   ===  
  _stprintf(szSignificantDigit,   TEXT("%f"),   dNum);  
   
  //   ===   找到最后一个有效数字的位置   ===  
  TCHAR* p_tcTmp;  
  for   (p_tcTmp   =   szSignificantDigit   +   lstrlen(szSignificantDigit)   -   1;   (TCHAR)'.'   !=   *p_tcTmp;   --p_tcTmp)  
  {  
  if   ('0'   !=   *p_tcTmp)  
  break;  
  }  
   
  //   ===   计算有效数字的位数   ===  
  DWORD dwCount;  
  dwCount   =   ((TCHAR)'.'   ==   *p_tcTmp   ?   0   :   p_tcTmp   -   _tcschr(szSignificantDigit,   (TCHAR)'.'));  
   
  //   ===   保存结果   ===  
  _stprintf(szSignificantDigit,   TEXT("%.*f"),   dwCount,   dNum);  
  }

 

void SignificantDigit(double   dNum, char szSignificantDigit[])  
{
 //   ===   把数字转换为字符串   ===  
 sprintf(szSignificantDigit, "%f", dNum);  
   
 //   ===   找到最后一个有效数字的位置   ===  
 char* p_tcTmp;  
 for(p_tcTmp   =   szSignificantDigit   +   strlen(szSignificantDigit)   -   1;   '.'   !=   *p_tcTmp;   --p_tcTmp)  
 {
  if   ('0'   !=   *p_tcTmp)  
   break;  
 }  
   
 //   ===   计算有效数字的位数   ===  
 DWORD dwCount;  
 dwCount   =   ('.'   ==   *p_tcTmp   ?   0   :   p_tcTmp   -   strchr(szSignificantDigit,   '.'));  
   
 //   ===   保存结果   ===  
 sprintf(szSignificantDigit,   "%.*f",   dwCount,   dNum);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值