Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: vtp - 04.12.07 - klo:12.13

Otsikko: round() ja rint() -funktioiden erot?
Kirjoitti: vtp - 04.12.07 - klo:12.13
Mitäs eroja mahtaa olla näillä kahdella funktiolla, jotka pyöristävät liukulukuja lähimpään kokonaislukuun? Ainakaan uClibc-kirjastosssa ei ole 'round':ia, mutta 'rint' löytyy. En ihan man-sivusta ymmärtänyt lukemaani. Glibc:stä tuo round sen sijaan löytyy.

Tarkoituksena on kääntää imlib2 -kirjasto uClibc:tä vasten. Käännös onnistuu ainoastaan, mikäli muutan kaikki: "round -> rint".
Otsikko: Vs: round() ja rint() -funktioiden erot?
Kirjoitti: SuperOscar - 04.12.07 - klo:15.03
glibc:n dokumentaatio on tosiaan tältä osin aika hankalasti muotoiltu :)

round()-funktioperheestä sanotaan: ”These functions are similar to rint, but they round halfway cases away from zero instead of to the nearest even integer” eli pyöristetään aina itseisarvoltaan suurempaan lukuun (0,5 1:een, -0,5 -1:een). Näinhän se on yleinen käytäntö ohjelmoinnin ulkopuolellakin.

rint()-perhe taas pyöristää ”nykyisen pyöristystavan (http://www.gnu.org/software/libc/manual/html_node/Floating-Point-Parameters.html#Floating-Point-Parameters)” mukaan.

Veikkaan (mutten tiedä), että rint() on sama kuin round(), jos asetat pyöristystavan oikein.
Otsikko: Vs: round() ja rint() -funktioiden erot?
Kirjoitti: vtp - 18.12.07 - klo:15.27
Kiitoksia vastauksesta. En ole huomannut rint-funktion aiheuttavan mitään kummallista, joten saa olla toistaiseksi näin.