Da bin ich auf folgenden Bug gestossen. Modulo(6.6, 1.1) spuckt 1.1 anstelle von 0.0 aus. Probiert mit FPC 3.0.4.
Code: Alles auswählen
program Project1;
function Modulo(Dividend, Quotient: double): double;
begin
Result := Dividend - Quotient * Int(Dividend / Quotient);
end;
begin
WriteLn(Modulo(8.8, 1.1): 10: 5);
WriteLn(Modulo(7.7, 1.1): 10: 5);
WriteLn(Modulo(6.6, 1.1): 10: 5); // Falsch !
WriteLn(Modulo(5.5, 1.1): 10: 5);
WriteLn(Modulo(5.9, 1.1): 10: 5);
end.
Ab FPC 3.1.1 wird Modulo in der Unit Math unterstützt.
Folgender Versuch mit FPC 3.1.1. macht einen ähnlichen Fehler, dort rechnet er mit 7.7 falsch.
Code: Alles auswählen
uses
Math;
begin
WriteLn(8.8 mod 1.1: 10: 5);
WriteLn(7.7 mod 1.1: 10: 5); // Falsch !
WriteLn(6.6 mod 1.1: 10: 5);
WriteLn(5.5 mod 1.1: 10: 5);
end.
Rechnet mein PC falsch, oder könnt ihr das auch nachvollziehen, bevor ich eine Bug-Report schreibe.