mojaSymfonia FORUM
https://forum.mix-soft.pl/

Zaokrąglenia w AMBasic
https://forum.mix-soft.pl/viewtopic.php?f=15&t=72
Strona 1 z 1

Autor:  darek.007 [ 2008-03-28, 10:49 ]
Tytuł:  Zaokrąglenia w AMBasic

Jak w FK premium zaokrąglić liczbę 3,12343453 do 4 miejsc po przecinku?

round - nie działa
zaokrFloat - nie działa
ZaokrW1 - DZIAŁA, ale nie tędy droga

Autor:  rafal [ 2008-03-28, 11:00 ]
Tytuł: 

Kod:
float sub Zaokr(float InFloat, int iZaokr )
Zaokr = Val((using "%.*f",iZaokr,InFloat))
endsub

inFloat - liczba do zaokrąglenia
iZaokr - ilość miejsc po przecinku

użycie
Kod:
print Zaokr(3.12343453 ,4)

Autor:  Jarek75 [ 2009-04-29, 16:51 ]
Tytuł: 

Ktoś chce skubnąć grosze i przelać na swoje konto? ;-)

Ten kod nie działa na FKP2009.1. Właśnie wywaliłem się na takim oto przykładzie:

Kod:
float n = 4459.75
float v = n*0.22
print n, v, (using "%.2f", v)


Wynik:
4459.750000 981.145000 981.14

Czyli nie ma uniwersalnego rounda w fk :-(

Autor:  wrob [ 2009-04-29, 20:03 ]
Tytuł: 

To nie do konca tak jest z tymi zaokragleniami - tzn wlasciwie to nei wiadomo jak ma być :-)

istnieja rozny typy zaokragleń (podaje 2 z okolo 10)

arytmetyczne: [0-4] w dół, [5-9] w górę: 1.4 = 1, 1.5 =1
do parzystej: liczba zaokrąglana zawsze do najbliższej parzystej: 1.5 = 2, 2.5 = 2

Zaokrąglania do parzystej ma sens przy operacjach finansowych. W przypadku gdy zawsze 0.5 zaokrąglamy w górę, a 0.4 w dół możemy mieć dużą rozbieżność w ostatecznych wynikach. Zaokrąglanie do parzystej (tzw banker’s rounding) niweluje ten błąd.

A teraz ciekawostki - PERVASIVE oraz MS SQL - funkcja ROUND() w zapytaniach - działa arytmetycznie, rowniez ROUND w arkuszu Excela dziala arytmetycznie, ale ten sam ROUND np w VBA w EXCELU działa metoda bankową, tak samo jest w wielu implementacjach c i c++.....

Autor:  Jarek75 [ 2009-04-30, 09:08 ]
Tytuł: 

wrob pisze:
Zaokrąglania do parzystej ma sens przy operacjach finansowych. W przypadku gdy zawsze 0.5 zaokrąglamy w górę, a 0.4 w dół możemy mieć dużą rozbieżność w ostatecznych wynikach. Zaokrąglanie do parzystej (tzw banker’s rounding) niweluje ten błąd.


Statystycznie to może jakoś działa, ale w konkretnych przypadkach i tak nic nie daje:
1.5 + 3.5 = 5.0
zaokrąglenie zwykłe:
2 + 4 <> 5
zaokrąglenie bankowe:
2 + 4 <> 5

W programie FK powinniśmy raczej dostać zaokrąglanie arytmetyczne.

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/