BOOL SetFloatDecimal(float input, int dec, float &out)
{
out = 0.0;
if (0 != _isnan(input)
|| dec < 0
|| dec > 15)
return FALSE;
#define BUFFERSIZE 100
char buffer[BUFFERSIZE] = {0};
const char point[] = ".";
int size = sprintf(buffer, "%.20f", input);
int index = strcspn(buffer, point);
if (0 >= index)
{
out = input;
return TRUE;
}
if ((BUFFERSIZE - 1) < index)
return FALSE;
BOOL bAdd = FALSE;
index = index + dec + 1;
if ('5' < buffer[index])
{
bAdd = TRUE;
}
else if ('5' == buffer[index])
{
bAdd = (0 != buffer[index - 1] % 2);
}
buffer[index] = '\0';
sscanf(buffer, "%f", &out);
if (bAdd)
out += 1 / pow(10, dec);
return (0 == _isnan(out));
}
阅读(672) | 评论(1) | 转发(0) |