|Subject||Re: [firebird-support] Cast as Numeric without parenthesis|
Once Upon A Time there was a language called Algol68 whose designers appeared to be keen to get all that sort of thing absolutely right, according to a careful reading of the "transput" specs ("I/O" was considered an old-fashioned term).
Here, I find that
SELECT CAST(123456789.12345678 as decimal) FROM RDB$DATABASE
SELECT CAST(123456789.123456789 as decimal) FROM RDB$DATABASE
fails. I don't know why.
The conclusion one had to come to was that the only way to get the conversion of numbers between binary and decimal digit representation right was to do all the work (not terribly quickly, to be sure) as arbitrary length string manipulation, with only a very very carefully designed conversion to binary form, from a carefully designed canonical string representation, as the last stage of a potentially long and complex sequence of operations.
I've never seen anyone go to remotely as much trouble to get this stuff right since then. I can't, however, see such an approach having a problem with the example above.
-- Tim Ward