Not on any IEEE system where double is 8 bytes.

Could you explain that assertion?

IEEE double precision can only represent a value exactly if it can be

expressed as an integer times a power of 2. Such a value has a

fractional part only if that power is negative. If a fraction with a

denominator which is a power of two has any non-zero digits, the last

such digit is always 5.

As I've already mentioned, I've already determined that on my system

300.03 is approximated by 1319545894726533*pow(2,-42); therefore 42

digits after the decimal point is sufficient to show the last non-zero

digit:

~/testprog(52) cat three.c

#include <stdio.h>

#ifndef __STDC_IEC_559__

#error Does not conform to IEC 60559 specifications from annex F

#endif

int main(void)

{

printf("%zu, %.42f\n", sizeof 300.03, 300.03);

return 0;

}

~/testprog(53) gcc -std=c99 -pedantic -Wall -Wpointer-arith -Wcast-align

-Wstrict-prototypes -Wmissing-prototypes three.c -lm -o three

~/testprog(54) three

8, 300.029999999999972715158946812152862548828125