|
PSBさんとほとんど同じなのですが。
short foo(const char * src, short n)
{
int i, e, decimal=0;
short seisuu = 0;
for(i=0;i<strlen(src);i++) {
if(*(src+i) == '.') {
decimal = 1;
}
else {
if(decimal != 0) {
if(n == 0) {
if(*(src+i) - '0' >= 5) seisuu++;
break;
}
n--;
}
seisuu *= 10;
seisuu += *(src+i)-'0';
}
}
for(e=0;e<n;e++) seisuu *= 10;
return seisuu;
}
atofを使って良いのなら次のような感じです。
short foo(const char * src, short n)
{
int pow_n=1, i;
for(i=0;i<n;i++) pow_n = pow_n * 10;
return (short)(atof(src) * pow_n + 0.5);
}
|