1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| #include <stdio.h>
#include <stdlib.h>
#include <math.h>
int length(int v) {
return log10(fabs(v)) + 1.0;
}
void sd2str(char *lpszDest, double value) {
char *pDst;
int i;
pDst = lpszDest;
i = value;
itoa(i, pDst, 10);
if (i < 0.0) pDst++;
pDst += length(i);
*pDst++ = ',';
value -= i;
if (value == 0.0) {*pDst++ = '0'; goto terminate;}
value *= 1E10;
i = fabs(value);
itoa(i, pDst, 10);
pDst += length(i);
i = value;
value -= i;
if (value == 0.0) {*pDst++ = '0'; goto terminate;}
value *= 1E7;
i = fabs(value);
itoa(i, pDst, 10);
pDst += length(i);
terminate:
*pDst = 0;
}
int main() {
double v;
char szReal[32];
__asm {
fldpi
fstp qword ptr[v];
}
v = -v;
sd2str(szReal, v);
printf("%s\n", szReal);
return 0;
} |
Partager