kategoria: AMOS
[#1] Instrukcja Round[up]
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#
[#2] Re: Instrukcja Round[up]

@Umpal, post #1

Int(N#+0.5)
[#3] Re: Instrukcja Round[up]

@kiero, post #2

Genialne w swojej prostocie! Dzięki
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem