Added -f and -d options to force input to be float or double format.

This commit is contained in:
hjp 2000-02-08 17:04:37 +00:00
parent ea6520357a
commit 4e9b6af8ed
1 changed files with 23 additions and 4 deletions

View File

@ -1,9 +1,12 @@
char ieeefloat_c_rcs_id[] = char ieeefloat_c_rcs_id[] =
"$Id: ieeefloat.c,v 1.1 1998-03-20 20:09:53 hjp Exp $"; "$Id: ieeefloat.c,v 1.2 2000-02-08 17:04:37 hjp Exp $";
/* ieeefloat: print binary representations of IEEE 754 FP numbers. /* ieeefloat: print binary representations of IEEE 754 FP numbers.
* *
* $Log: ieeefloat.c,v $ * $Log: ieeefloat.c,v $
* Revision 1.1 1998-03-20 20:09:53 hjp * Revision 1.2 2000-02-08 17:04:37 hjp
* Added -f and -d options to force input to be float or double format.
*
* Revision 1.1 1998/03/20 20:09:53 hjp
* Initial release: * Initial release:
* prints arguments as strings, floats, and doubles decimal and binary. * prints arguments as strings, floats, and doubles decimal and binary.
* *
@ -49,7 +52,7 @@ char *cmnd;
static void usage(void) { static void usage(void) {
fprintf(stderr, "Usage: %s fp-number ...\n", cmnd); fprintf(stderr, "Usage: %s [-f|-d] fp-number ...\n", cmnd);
exit(1); exit(1);
} }
@ -152,12 +155,28 @@ static void sanitychecks(void) {
int main(int argc, char**argv) { int main(int argc, char**argv) {
int i; int i;
int convfloat = 0;
char *p;
cmnd = argv[0]; cmnd = argv[0];
sanitychecks(); sanitychecks();
for (i = 1; i < argc; i++) { for (i = 1; i < argc; i++) {
double d = strtod(argv[i], NULL); double d;
if (strcmp(argv[i], "-f") == 0) {
convfloat = 1;
continue;
} else if (strcmp(argv[i], "-d") == 0) {
convfloat = 0;
continue;
}
d = strtod(argv[i], &p);
if (p && *p) usage();
if (convfloat) {
d = (float) d;
}
printf("%s\n", argv[i]); printf("%s\n", argv[i]);
printdouble(d); printdouble(d);
printfloat(d); printfloat(d);