< návrat zpět

MS Excel


Téma: zaokruhlovanie VBA rss

Zaslal/a 17.2.2011 7:49

Zakruhlovanie v prostredi VBA-funkcia ROUND(109.545,2) Vysledok pri pouziti v bunke je iny ako vo VBA. Ide iba o konkretnu skupinu za desatinnou ciarkou XXX,545. V prilohe je popisane blizsie.
Da sa to nejako inak riesit ?

Příloha: zip4132_zaokruh.zip (115kB, staženo 36x)
Zaslat odpověď >

#004135
avatar
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

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje