Nie wiem, czy nie wyważam otwartych drzwi, ale przeleciałem instrukcję AMOS-a kilkakrotnie i nigdy nie natrafiłem na instrukcję zaokrąglającą w górę.
Int() jak wiadomo zawsze robi to w dół, a czasami potrzebna jest odwrotna operacja.
Oto moja propozycja (jeśli ktoś ma lepszy pomysł przyjmę z otwartym umysłem):
Procedure ROUNDUP[N#]
Fix(1)
L=Len(Str$(N#))
AFTER_DOT=Val(Mid$(Str$(N#),L))
If AFTER_DOT>5 Then N#=Int(N#)+1
End Proc[N#]
Objaśnienie:
1. Przekazywana do procedury jest liczba
N#,
2.
Fix(1) ustawia ilość wyświetlanych liczb po przecinku (czyli po kropce w AMOS-ie) do jednej - dla przykładu
3.5897 zaokrągli do
3.6,
3.
Len() oblicza długość
N# po zamianie na ciąg tekstowy przez
Str$(),
4. Pobierana jest tylko wartość po przecinku (nazwana przeze mnie
AFTER_DOT) i służy do tego
Mid$(), natomiast
Val() zamieni na powrót ciąg tekstowy na liczbę,
5. Jeśli
AFTER_DOT jest większe od
5 (50%), to do
N# dodaje
1 (uprzednio obcinając wartość po przecinku instrukcją
Int()), czyli ostatecznie wg powyższego przykładu otrzymamy wynik
4.
Tak zwróconą wartość można wyświetlić przez:
Print Param#