// ======================================================
// 功能: 获取有效数字
// 参数: 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);
}