Просмотр исходного кода

* correctly compare floating point values in TValue

git-svn-id: trunk@41535 -
svenbarth 6 лет назад
Родитель
Сommit
c2da9abd17
1 измененных файлов с 6 добавлено и 4 удалено
  1. 6 4
      packages/rtl-objpas/tests/tests.rtti.util.pas

+ 6 - 4
packages/rtl-objpas/tests/tests.rtti.util.pas

@@ -37,7 +37,7 @@ function GetArray(const aArg: array of SizeInt): TValue;
 implementation
 
 uses
-  TypInfo, SysUtils;
+  TypInfo, SysUtils, Math;
 
 {$ifndef fpc}
 function TValueHelper.AsUnicodeString: UnicodeString;
@@ -124,10 +124,12 @@ begin
           Result := False
         else begin
           case td1^.FloatType of
-            ftSingle,
-            ftDouble,
+            ftSingle:
+              Result := SameValue(Single(aValue1.AsExtended), Single(aValue2.AsExtended));
+            ftDouble:
+              Result := SameValue(Double(aValue1.AsExtended), Double(aValue2.AsExtended));
             ftExtended:
-              Result := aValue1.AsExtended = aValue2.AsExtended;
+              Result := SameValue(aValue1.AsExtended, aValue2.AsExtended);
             ftComp:
               Result := aValue1.AsInt64 = aValue2.AsInt64;
             ftCurr: