Moi,
yritin katsella tuolta foorumeilta ohjeita desimaalien poistoon, mutta en ihan vielä onnistunut. Voisiko joku terävämpi jeesaa taas?
eli haen tälläisellä komennolla sql:stä tietoa
<?php echo $rows['sum(NETTI)']; ?>
Saan tuloksena summan: 52.58000183105469
Voiko tuota rimpsua jatkaa niin että lukema olisi kivemman näköinen tyyliin 52.58?
Vai onko jotain muuta ratkaisua ongelmaan?
Ehkä helpoin tapa on käyttää PHP:n funktiota round:
Parametri 2 tarkoittaa 2 desimaalin tarkkuutta.
No perhana. Hienosti toimii. Kiitos Antti!
Olin jo tuota round komentoa kokeillut mutta väärässä paikassa. ;)
Antero kirjoitti:
Saan tuloksena summan: 52.58000183105469
Voiko tuota rimpsua jatkaa niin että lukema olisi kivemman näköinen tyyliin 52.58?
Vai onko jotain muuta ratkaisua ongelmaan?
Jos kyse on rahasummista, kuten kuudes ja puoles aistini kertoo, niin silloin oikea ratkaisu on käyttää kauttaaltaan kokonaislukuja, siis senttimääriä. Vain summia luettaessa ja tulostettaessa sitten käytetään desimaaliesitystä, mieluiten oikein lokalisoitua (suomenkielisellä sivulla käytetään desimaalipilkkua, ei -pistettä).
Mielestäni oikea ratkaisu ei välttämättä enää nykyaikana ole käyttää kokonaislukuja. Toki liukulukuja on rahan tapauksessa syytä välttää, mutta desimaaliluvut ovat mielestäni useimmiten se paras vaihtoehto.
Tosin tässä oli kyse PHP:stä, jossa ei taida desimaalilukuja olla. Ehkäpä siis tosiaan ratkaisu olisi käyttää niitä kokonaislukuja. Ei kuitenkaan vaikuta mielipiteeseeni.
Senttimäärän tallentaminen kokonaislukuna on vielä liukulukujakin huonompi vaihtoehto. Se aiheuttaa taatusti enemmän pyöristysvirheitä.
Parempi ratkaisu on Grezin mainitsemat desimaaliluvut, mutta käytännöllisistä syistä kokonaisluvut esim. 0,000001 euron tarkkuudella käyvät myös.
jlaire kirjoitti:
aiheuttaa taatusti enemmän pyöristysvirheitä.
Riippunee operaatiosta. Jos tarvitaan vain yhteen- ja vähennyslaskuja, niin en näe miten kokonaisluvuilla olisi mahdollista saada pyöristysvirheitä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.