when printing floats in "e"-format, trailing zeros are significant!
This commit is contained in:
parent
0f49b18986
commit
f18da9078c
1 changed files with 16 additions and 10 deletions
|
@ -31,25 +31,31 @@ _str(f,buffer)
|
||||||
double f;
|
double f;
|
||||||
char *buffer;
|
char *buffer;
|
||||||
{
|
{
|
||||||
char *c;
|
register char *c = buffer;
|
||||||
c= buffer;
|
int eformat = 0;
|
||||||
if( f>=0){
|
if( f>=0){
|
||||||
if( f> 1.0e8)
|
if( f> 1.0e8) {
|
||||||
|
eformat = 1;
|
||||||
sprintf(buffer," %e",f);
|
sprintf(buffer," %e",f);
|
||||||
|
}
|
||||||
else sprintf(buffer," %f",f);
|
else sprintf(buffer," %f",f);
|
||||||
c++;
|
c++;
|
||||||
}else {
|
}else {
|
||||||
if(-f> 1.0e8)
|
if(-f> 1.0e8) {
|
||||||
|
eformat = 1;
|
||||||
sprintf(buffer,"-%e",-f);
|
sprintf(buffer,"-%e",-f);
|
||||||
|
}
|
||||||
else sprintf(buffer,"-%f",-f);
|
else sprintf(buffer,"-%f",-f);
|
||||||
}
|
}
|
||||||
for( ; *c && *c!= ' ';c++) ;
|
if (! eformat) {
|
||||||
c--;
|
for( ; *c && *c!= ' ';c++) ;
|
||||||
while( c>buffer && *c== '0')
|
c--;
|
||||||
{
|
while( c>buffer && *c== '0')
|
||||||
*c= 0;c--;
|
{
|
||||||
|
*c= 0;c--;
|
||||||
|
}
|
||||||
|
if( *c=='.') *c=0;
|
||||||
}
|
}
|
||||||
if( *c=='.') *c=0;
|
|
||||||
strcat(buffer," ");
|
strcat(buffer," ");
|
||||||
}
|
}
|
||||||
_prfnum(f)
|
_prfnum(f)
|
||||||
|
|
Loading…
Reference in a new issue