Was kommt denn bei Dir da so raus?
Firebird:
select 0.1 * (12 / 100 * 0.5) as a, 0.1 * (0.5 / 100 * 12) as b from dual;
liefert hier 0 und 0
select 0.1 * (12 / 100 * 0.500) as a, 0.1 * (0.500 / 100 * 12) as b from dual;
liefert hier 0 und 0,006
select 0.100 * (12 / 100.000 * 0.5000) as a, 0.100 * (0.5000 / 100 * 12) as b from dual;
liefert hier 0,006 und 0,006
hä???
Da wird also "innendrinnen" irgendwie implizit gerundet auf die Zahl der da gerade (zufällig) anwesenden oder eben auch nicht anwesenden Nachkommastellen.
Oder anders ausgedrückt:
Wir haben hier Ganzzahl- und Nachkommazahlen.
Da wird eine Typkonvertierung gemacht, entweder auf Ganzzahl oder auf Nachkommazahl. Und dann wird da "irgendwie" entsprechend gerundet
Achso: Bevor ich es vergesse:
Die Ergebnisse mit einem Delphiprogramm über die
ADO-Komponenten (s. o.) sind andere, als die über FlameRobin:
select 0.1 * (12 / 100 * 0.5) as a, 0.1 * (0.5 / 100 * 12) as b from dual;
liefert 0,00 und 0,00
select 0.1 * (12 / 100 * 0.500) as a, 0.1 * (0.500 / 100 * 12) as b from dual;
liefert 0,0000 und 0,0060
select 0.100 * (12 / 100.000 * 0.5000) as a, 0.100 * (0.5000 / 100 * 12) as b from dual;
liefert 0.0060000000 und 0.0060000
Upps