Delphi 7 Professional
|
24. Mär 2019, 10:25
Zitat:
Ich hoffe, der ist in VB6 auch in rad, ansonsten tippe ich wieder auf ein string/Anzeige-Problem
Wie meinst du das?
Die Ausgabe der Zahlen erfolgte in Delphi mit 12 Nachkommastellen und in VB mit 7. D. h.: Bei der Ausgabe werden die weiteren Nachkommastellen auf- oder abgerundet.
Bzw. bei
Zitat:
Delphi:
Die ersten 10 einträge von Cos() sind 1
von 11 > 18 ist die Value '0,999'
wird die Anzeige auf drei Nachkommastellen gerundet.
Das die ersten 10 Werte bei Delphi in der Ausgabe als 1 erscheinen, liegt daran, dass sie sich erst ab der vierten Nachkommastelle unterscheiden. Die vierte und folgende Nachkommastellen werden bei der Ausgabe aber auf drei Nachkommastellen gerundet. Diese Rundung führt dazu, dass die Werte nicht mehr unterscheidbar sind.
Bei derartigen Zahlen, die sich nur marginal unterscheiden, führt die Ausgabe häufig zu einer fehlerhaften Anzeige der Werte. Die tatsächlichen Werte in den Variabeln sind jedoch korrekt.
Hier mal ein Pascalscript und seine Ausgabe. Hier wird recht gut deutlich, was mit
Zitat:
ansonsten tippe ich wieder auf ein string/Anzeige-Problem
gemeint ist:
Delphi-Quellcode:
program Test;
const
pi = 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912;
var
i : Integer;
x : Double;
n : Double;
FFFTSize : Integer;
sl : TStringList;
begin
sl := TStringList.Create;
FFFTSize := 2048;
for i := 0 to 10 do begin
n := i;
x := 0.53836 - 0.46164 * Cos(6.28318530717959 * n / (FFFTSize - 1));
sl.Add(Format('%1.18f - %1.3f',[x,x]));
end;
sl.Add('');
for i := 0 to FFFTSize -1 do begin
n := i;
x := cos(n / FFFTSize * 2.0 * pi);
sl.Add(Format('%.4d - %1.18f - %1.3f - %1.18f - %1.3f',[i,x,x, pi,pi]));
end;
sl.SaveToFile('String_Anzeige-Problem.txt');
sl.Free;
end.
Ein Auszug aus dem Ergebnis, das sich vollstänig in der anhängenden Datei befindet:
Code:
0,076719999999999949 - 0,077
0,076722174688946714 - 0,077
0,076728698735298086 - 0,077
0,076739572077587136 - 0,077
0,076754794613369869 - 0,077
0,076774366199225946 - 0,077
0,076798286650760166 - 0,077
0,076826555742603994 - 0,077
0,076859173208418010 - 0,077
0,076896138740894182 - 0,077
0,076937451991758771 - 0,077
0000 - 1,000000000000000000 - 1,000 - 3,141592653589793280 - 3,142
0001 - 0,999995293809576192 - 1,000 - 3,141592653589793280 - 3,142
0002 - 0,999981175282601088 - 1,000 - 3,141592653589793280 - 3,142
0003 - 0,999957644551963904 - 1,000 - 3,141592653589793280 - 3,142
0004 - 0,999924701839144448 - 1,000 - 3,141592653589793280 - 3,142
0005 - 0,999882347454212608 - 1,000 - 3,141592653589793280 - 3,142
0006 - 0,999830581795823360 - 1,000 - 3,141592653589793280 - 3,142
0007 - 0,999769405351215232 - 1,000 - 3,141592653589793280 - 3,142
0008 - 0,999698818696204288 - 1,000 - 3,141592653589793280 - 3,142
0009 - 0,999618822495178624 - 1,000 - 3,141592653589793280 - 3,142
0010 - 0,999529417501093120 - 1,000 - 3,141592653589793280 - 3,142
0011 - 0,999430604555461760 - 0,999 - 3,141592653589793280 - 3,142
0012 - 0,999322384588349568 - 0,999 - 3,141592653589793280 - 3,142
0013 - 0,999204758618363904 - 0,999 - 3,141592653589793280 - 3,142
0014 - 0,999077727752645376 - 0,999 - 3,141592653589793280 - 3,142
0015 - 0,998941293186856832 - 0,999 - 3,141592653589793280 - 3,142
0016 - 0,998795456205172352 - 0,999 - 3,141592653589793280 - 3,142
0017 - 0,998640218180265216 - 0,999 - 3,141592653589793280 - 3,142
0018 - 0,998475580573294720 - 0,998 - 3,141592653589793280 - 3,142
0019 - 0,998301544933892864 - 0,998 - 3,141592653589793280 - 3,142
0020 - 0,998118112900149120 - 0,998 - 3,141592653589793280 - 3,142
0021 - 0,997925286198595968 - 0,998 - 3,141592653589793280 - 3,142
0022 - 0,997723066644191616 - 0,998 - 3,141592653589793280 - 3,142
0023 - 0,997511456140303488 - 0,998 - 3,141592653589793280 - 3,142
0024 - 0,997290456678690176 - 0,997 - 3,141592653589793280 - 3,142
0025 - 0,997060070339483008 - 0,997 - 3,141592653589793280 - 3,142
...
1525 - -0,033741171851377760 - -0,034 - 3,141592653589793280 - 3,142
1526 - -0,030674803176636486 - -0,031 - 3,141592653589793280 - 3,142
1527 - -0,027608145778966163 - -0,028 - 3,141592653589793280 - 3,142
1528 - -0,024541228522912387 - -0,025 - 3,141592653589793280 - 3,142
1529 - -0,021474080275469286 - -0,021 - 3,141592653589793280 - 3,142
1530 - -0,018406729905805165 - -0,018 - 3,141592653589793280 - 3,142
1531 - -0,015339206284988122 - -0,015 - 3,141592653589793280 - 3,142
1532 - -0,012271538285719624 - -0,012 - 3,141592653589793280 - 3,142
1533 - -0,009203754782060083 - -0,009 - 3,141592653589793280 - 3,142
1534 - -0,006135884649154417 - -0,006 - 3,141592653589793280 - 3,142
1535 - -0,003067956762965594 - -0,003 - 3,141592653589793280 - 3,142
1536 - -0,000000000000000184 - 0,000 - 3,141592653589793280 - 3,142
1537 - 0,003067956762966115 - 0,003 - 3,141592653589793280 - 3,142
1538 - 0,006135884649154048 - 0,006 - 3,141592653589793280 - 3,142
1539 - 0,009203754782059716 - 0,009 - 3,141592653589793280 - 3,142
1540 - 0,012271538285720144 - 0,012 - 3,141592653589793280 - 3,142
1541 - 0,015339206284987754 - 0,015 - 3,141592653589793280 - 3,142
1542 - 0,018406729905804797 - 0,018 - 3,141592653589793280 - 3,142
1543 - 0,021474080275469805 - 0,021 - 3,141592653589793280 - 3,142
1544 - 0,024541228522912022 - 0,025 - 3,141592653589793280 - 3,142
1545 - 0,027608145778965795 - 0,028 - 3,141592653589793280 - 3,142
1546 - 0,030674803176637005 - 0,031 - 3,141592653589793280 - 3,142
1547 - 0,033741171851377402 - 0,034 - 3,141592653589793280 - 3,142
...
2022 - 0,996820299291165824 - 0,997 - 3,141592653589793280 - 3,142
2023 - 0,997060070339483008 - 0,997 - 3,141592653589793280 - 3,142
2024 - 0,997290456678690176 - 0,997 - 3,141592653589793280 - 3,142
2025 - 0,997511456140303488 - 0,998 - 3,141592653589793280 - 3,142
2026 - 0,997723066644191616 - 0,998 - 3,141592653589793280 - 3,142
2027 - 0,997925286198595968 - 0,998 - 3,141592653589793280 - 3,142
2028 - 0,998118112900149120 - 0,998 - 3,141592653589793280 - 3,142
2029 - 0,998301544933892736 - 0,998 - 3,141592653589793280 - 3,142
2030 - 0,998475580573294720 - 0,998 - 3,141592653589793280 - 3,142
2031 - 0,998640218180265216 - 0,999 - 3,141592653589793280 - 3,142
2032 - 0,998795456205172352 - 0,999 - 3,141592653589793280 - 3,142
2033 - 0,998941293186856832 - 0,999 - 3,141592653589793280 - 3,142
2034 - 0,999077727752645376 - 0,999 - 3,141592653589793280 - 3,142
2035 - 0,999204758618363904 - 0,999 - 3,141592653589793280 - 3,142
2036 - 0,999322384588349568 - 0,999 - 3,141592653589793280 - 3,142
2037 - 0,999430604555461760 - 0,999 - 3,141592653589793280 - 3,142
2038 - 0,999529417501093120 - 1,000 - 3,141592653589793280 - 3,142
2039 - 0,999618822495178624 - 1,000 - 3,141592653589793280 - 3,142
2040 - 0,999698818696204288 - 1,000 - 3,141592653589793280 - 3,142
2041 - 0,999769405351215232 - 1,000 - 3,141592653589793280 - 3,142
2042 - 0,999830581795823360 - 1,000 - 3,141592653589793280 - 3,142
2043 - 0,999882347454212608 - 1,000 - 3,141592653589793280 - 3,142
2044 - 0,999924701839144448 - 1,000 - 3,141592653589793280 - 3,142
2045 - 0,999957644551963904 - 1,000 - 3,141592653589793280 - 3,142
2046 - 0,999981175282601088 - 1,000 - 3,141592653589793280 - 3,142
2047 - 0,999995293809576192 - 1,000 - 3,141592653589793280 - 3,142
|