wrob pisze:
zawsze mozna troche pokombiniwac i np
float x
int y
y=(x+0.5)
Kiedyś się na tym przejechałem i stosuję x+0.500001 i oczywiście long zamiast int. Przykład:
Kod:
float x
int y
x=(0.15 - 0.005) * 100 // to jest liczba 14.5
print (using "%.0f", x); lf
y=(x+0.5)
print y; lf
y=(x+0.500001)
print y; lf
Wynik (FKP 2009.1):
W ogóle chyba nie będę używać takich sztuczek, bo long ma i tak ograniczenie do 9 cyfr. Zastosuję chyba od dziś taki wariant:
Kod:
//----------------------------------------------------
float sub ZaokrFloatBS (float a, int n)
//----------------------------------------------------
sFmt = (using "%%.%df", n)
s = (using sFmt, a + 0.000001)
ZaokrFloatBS = Val(s)
endsub
Liczba zer ma tu znaczenie. Im więcej zer, tym szybciej funkcja padnie na dużych liczbach, rzędu setek milionów. Wniosek jest jeden: przydałoby się firmowe zaokrąglenie.