diff --git a/core/Float.cc b/core/Float.cc index 881fc660ef687d870afe80b00eea68712db32c5d..050ab6bd2d5e6e76adf35e1c142f9f21707232d4 100644 --- a/core/Float.cc +++ b/core/Float.cc @@ -481,7 +481,11 @@ FLOAT::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, double mantissa, exponent; exponent=floor(log10(fabs(float_value)))+1.0-DBL_DIG; mantissa=floor(float_value*pow(10.0,-exponent)+0.5); - if(mantissa)while(!fmod(mantissa,10.0))mantissa/=10.0,exponent+=1.0; + if(mantissa != 0.0) { + while(fmod(mantissa,10.0) == 0.0) { + mantissa/=10.0,exponent+=1.0; + } + } /** \todo review gcc 2.95: in mprintf below: @@ -1188,7 +1192,11 @@ int FLOAT::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { double mantissa, exponent; exponent=floor(log10(fabs(float_value)))+1.0-DBL_DIG; mantissa=floor(float_value*pow(10.0,-exponent)+0.5); - if(mantissa)while(!fmod(mantissa,10.0))mantissa/=10.0,exponent+=1.0; + if(mantissa != 0.0) { + while(fmod(mantissa,10.0) == 0.0) { + mantissa/=10.0,exponent+=1.0; + } + } char * uc = mprintf("\x03%.f.E%s%.0f", mantissa, exponent==0.0?"+":"", exponent); size_t len = mstrlen(uc);