Toon posts:

[MYSQL] ROUND rond niet af zoals verwcht

Pagina: 1
Acties:

Verwijderd

Topicstarter
SELECT ROUND( 185.035, 2 ) ;
levert 185.04

SELECT ROUND( 185.045, 2 ) ;
levert 185.04

SELECT ROUND( 185.046, 2 ) ;
levert 185.05

SELECT ROUND( 185.055, 2 ) ;
levert 185.06

Deze slaat dus nergens op, voor zover ik kan bedenken...
SELECT ROUND( 185.045, 2 ) ;

Weet iemand wat de logica hiervan is?
voor zover ik weet draai ik niks beta spul ofzo
OPENBSD 3.5-stable
Mysql 4.0.18

Dit had ik al gelezen:
Note that the behavior of ROUND() when the argument is halfway between two integers depends on the C library implementation.
Dat snap ik, maar waarom is ie niet consequent.

[ Voor 22% gewijzigd door Verwijderd op 21-10-2004 14:22 ]


Verwijderd

Topicstarter
Halverwege even getallen gaat ie dus naar beneden afronden, en bij oneven naar boven...

De oplossing is natuurlijk om het zelf te doen:
TRUNCATE(getal + 0.005, 2)

Niemand een idee waarom ie zo vreemd afrond?

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 26-08 14:35
Zou het niet hetzelfde probleem zijn als hier? [rml][ php] Raar afrondingsprobleempje met floats[/rml]

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

-- correctie .. niks gezegd .. beter lezen

[ Voor 87% gewijzigd door Fish op 30-10-2004 15:25 ]

Iperf


Verwijderd

Is het niet een kwestie van het zgn. "Banking rounding" ?

  • VanRoyal
  • Registratie: Oktober 2004
  • Niet online
Verwijderd schreef op 30 oktober 2004 @ 15:26:
Is het niet een kwestie van het zgn. "Banking rounding" ?
Grote kans van wel ja.

Hier kan de TS daar wat meer over vinden. Is niet specifiek gericht op MYSQL, maar misschien een goed punt om te beginnen; de verschillende manieren om af te ronden worden er iig uitgelegd.
Pagina: 1