Doubles are nominally double precision signed floating point values. It is not possible to make any statement about their precision because this will vary according to the target. It is reasonable to expect at least a 64 bit representation.

The lexical syntax for a double literal is:

double = sign? ( '1'..'9' decimal* | '0' ) ( '.' decimal+ exponent? | exponent ) sign = '+'|'-' decimal = '0'..'9' exponent = ('e'|'E') sign? decimal+