diff --git a/src/db/dbConvert.c b/src/db/dbConvert.c index 44915aca0..62b724a6b 100644 --- a/src/db/dbConvert.c +++ b/src/db/dbConvert.c @@ -53,7 +53,9 @@ static void safeDoubleToFloat(double *pd,float *pf) { double abs = fabs(*pd); - if(abs>=FLT_MAX) { + if(*pd==0.0) { + *pf = 0.0; + } else if(abs>=FLT_MAX) { if(*pd>0.0) *pf = FLT_MAX; else *pf = -FLT_MAX; } else if(abs<=FLT_MIN) { if(*pd>0.0) *pf = FLT_MIN; else *pf = -FLT_MIN; diff --git a/src/db/dbFastLinkConv.c b/src/db/dbFastLinkConv.c index df58d88fa..5a5e829e0 100644 --- a/src/db/dbFastLinkConv.c +++ b/src/db/dbFastLinkConv.c @@ -941,7 +941,9 @@ static long cvt_d_f( struct dbAddr *paddr) { double abs = fabs(*from); - if(abs>=FLT_MAX) { + if(*from==0.0) { + *to = 0.0; + } else if(abs>=FLT_MAX) { if(*from>0.0) *to = FLT_MAX; else *to = -FLT_MAX; } else if(abs<=FLT_MIN) { if(*from>0.0) *to = FLT_MIN; else *to = -FLT_MIN;