Myslím si, že to má spojitost s FPU. Všechny reálná čísla se zpracovávají právě přes FPU a FPU na zpracování používá stavové slovo. Instrukce nějaká FC...??? nevím. V tomto slově záleží na nastavení bitů, které znamanají příznak jak má nakládat s čísly. Např je zaokrouhlování bankovní tj. 5 jednou nahoru a pak dolu podle předchozího čísla (sudé, liché). Mimo jiné je možné nastavit, zda nula je kladná, neno neutrální. Z toho co je ve výsledku vyplývá, že Excel, nebo widle mají nulu neutrální a ostatní zaokrouhlování je jen dolů. Pokud Ti to nezpůsobí problémy s navigací ve vesmíru(bez urážky :) ), tak bych na to buď zapoměl a nebo si vyrobil pro zaokrouhlování vlastní DLL knihovnu, kterou bys musel napsat v ASSEMBLEWRU a nastavit si pro FPU své vlastní stavové slovo. Ještě mě napadlo, že stavové slovo pro FPU by mohlo být někde v registrech. R.
Sub pokus()
Dim i As Long
Dim A As Variant
A = Array(-5.545, -4.545, -3.545, -2.545, -1.545, -0.545, 0.545, 1.545, 2.545, 3.545, 4.545, 5.545)
For i = 0 To UBound(A)
Debug.Print Round(A(i), 2)
Next i
End Sub
Výsledek
-5,54
-4,54
-3,54
-2,54
-1,54
-0,55
0,55
1,54
2,54
3,54
4,54
5,54
citovat
Sub pokus()
Dim i As Long
Dim A As Variant
A = Array(-5.545, -4.545, -3.545, -2.545, -1.545, -0.545, 0.545, 1.545, 2.545, 3.545, 4.545, 5.545)
For i = 0 To UBound(A)
Debug.Print Round(A(i), 2)
Next i
End Sub
Výsledek
-5,54
-4,54
-3,54
-2,54
-1,54
-0,55
0,55
1,54
2,54
3,54
4,54
5,54
citovat