Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: 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".
-
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.
-
Kiitoksia vastauksesta. En ole huomannut rint-funktion aiheuttavan mitään kummallista, joten saa olla toistaiseksi näin.