Currency comparation/division not given the expected result
Original Reporter info from Mantis: mingodad
-
Reporter name: Domingo Alvarez Duarte
Original Reporter info from Mantis: mingodad
- Reporter name: Domingo Alvarez Duarte
Description:
When testing some modifications on TMemDataSet I did a small program to test it and for my surprise comparisons betwen currency numbers after multiplication/division didn't give allways the expected result.
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
curr1, curr2, curr3: currency;
begin
for i:=0 to 100 do
begin
MemDataset1.Append;
curr1 := (i+1) * 1.339;
curr2 := 33.9;
MemDataset1.Fields[0].AsCurrency := curr1 * curr2;
MemDataset1.Fields[1].AsCurrency := MemDataset1.Fields[0].AsCurrency * 2;
curr3 := (curr1 * curr2) * 2;
MemDataset1.Fields[2].AsString := CurrToStr((curr1 * curr2) * 2) + ' : ' + CurrToStr(MemDataset1.Fields[1].AsCurrency/2);
MemDataset1.Fields[3].AsBoolean:= MemDataset1.Fields[0].AsCurrency = Currency(MemDataset1.Fields[1].AsCurrency/2);
MemDataset1.Fields[4].AsBoolean:= Currency(curr1 * curr2) = Currency(curr3/2);
MemDataset1.Post;
end;
end;
The operations are simetric so I expect they allways give the same result, because "Currency" operates on integer operations.
Am I missing something here !
Mantis conversion info:
- Mantis ID: 14870
- OS: win32
- Platform: win32
- Version: 2.2.5
- Fixed in version: 2.4.2
- Monitored by: » luizamerico (Luiz Americo)