Oracle ceil pour les nombres décimaux
Lors de l'arrondi à 2 décimales, la valeur 4.01132141 sera arrondi à 4.02, car elle dépasse 4.01.
Comment pouvez-vous faire cela en PL/SQL?
Ce qui devrait "0" être arrondies?
0, car il ne dépasse pas 0.00
Ne peut pas répéter:
0, car il ne dépasse pas 0.00
Ne peut pas répéter:
exec dbms_output.put_line( round (4.01132141, 2) );
sur 10gR2 retourne 4.01.OriginalL'auteur K Ratnajyothi | 2010-09-10
Vous devez vous connecter pour publier un commentaire.
La fonction de "round up" est CEIL, mais il génère un nombre entier.
La fonction pour "arrondir" est ÉTAGE, mais il génère un nombre entier.
La fonction d'arrondir le plus proche " est RONDE, et il vous permet de spécifier le nombre de décimales (dp).
Noter que le PLAFOND arrondi à un nombre entier; arrondir à 2 dp, vous devez multiplier par 100, utilisez CEIL, et diviser par 100.
Pour obtenir la réponse raisonnablement directement, utilisez:
Cela fonctionne parce que, pour les données d'exemple de 4.01132141, la valeur transmise à la RONDE est 4.01632, et lors de l'arrondi à 2 dp, qui devient 4.02. Si la valeur a commencé comme 4.0593, dire, alors la valeur passée à la RONDE serait 4.0643, qui lors de l'arrondi à 2 dp devient 4.06, en tant que de besoin.
Il ya un couple de difficile de bits:
OriginalL'auteur Jonathan Leffler
Un autre moyen serait de faire
ceil(value*100)/100
, mais qui semble peu élégante. Pas sûr qu'il y a un moyen de le rendreround
se comportent de la façon dont vous le souhaitez.OriginalL'auteur Alex Poole
J'ai connu le même problème et est venu avec la déclaration suivante, il a bien fonctionné jusqu'à présent.
OriginalL'auteur Alex Deux
sélectionnez 4.01132141, CEIL(4.01132141*100)/100 de double
OriginalL'auteur Joy Ruhe
Vous pouvez l'utiliser pour l'Arrondissement jusqu'en PLSQL:
ROUND( UrNo+ (5 /PUISSANCE(10, DecimalPlaces + 1)) , DecimalPlaces)
OriginalL'auteur Jaydip Mehta