Google feuille de calcul arrondi à l'inférieur à 0,5, mais ronde, au-dessus de que
La régulière "ROND" de la fonction arrondit vers le bas quand < 0,5 et terminera lors de l' >= 0.5
J'ai besoin de 0,5 à être arrondie vers le bas, mais tout ce qui précède que pour être arrondi.
Afin de:
10.4 devrait être de 10
10.5 doit être de 10
10.6 devrait être de 11
Edit: Voici la solution je suis venu avec
Si la valeur à arrondir est en B1
Et la précision décimale est en A1 (0 = pas de décimales, 1 = une décimale après la virgule, etc.)
=IF(MOD(ABS(B1),(1/(10^A1)))<=0.5*(1/(10^A1)),ROUNDDOWN(B1,A1),ROUNDUP(B1,A1))
La ABS()
fait en sorte qu'il fonctionne avec des nombres négatifs.
Le (1/(10^A1))
fait en sorte que ma précision (qui est le deuxième argument de Google fonctions d'arrondi) des échelles de ma condition à la limite (0.5
) en conséquence.
Et le MOD()
est ce qui détermine en fait ma condition à la limite.
Edit2:
Solution plus élégante grâce à @Jayen
=ROUNDUP(B1 - sign(B1) * (10 ^ -A1) /2, A1)
- le " plus élégante solution par Jayen a un bug. essayez avec .2 et vous obtenez 1 au lieu de 0! Aussi -.2 yeilds -1 au lieu de 0 trop. Zéro yeilds 0. Mais n'importe quel nombre entre 0 et 5 des rendements de 1 au lieu de 0. Les gens ont vraiment besoin de tester des choses plus à fond.
Vous devez vous connecter pour publier un commentaire.
Il est possible de créer une instruction SI, pour ce faire,
=IF(A1-int(A1)>0.5,int(A1)+1,int(A1))
Mais les coutures une demande étrange, la convention (à l'ouest), est à rond .5 le haut, pas vers le bas.
Avertissement: ce crédité 'solution' a un bug:
Brancher .1, .2, .3, .4 ou des valeurs négatives de ceux à voir des résultats inattendus. La solution, je suis allé avec est:
J'ai donc utilisé Jayen malin de la formule, mais utilisés MAX avec l'ABS pour éliminer le bogue, puis multipliée par le SIGNE pour lui permettre de travailler pour les nombres positifs et négatifs.
Je suis la création de
C1 = (10 ^ -A1) /2
qui est de 0,5 si vous arrondir à 0 décimales, 0,05 si vous arrondir à 1, etc.Alors il est tout simplement:
=ROUNDUP(B1 - C1, A1)
Ou la substitution:
=ROUNDUP(B1 - (10 ^ -A1) /2, A1)
EDIT:
Vous ne savez pas si vous voulez négatif de la moitié des numéros de tour vers ou loin de 0, mais est-ce ok?
=ROUNDUP(B1 - sign(B1) * (10 ^ -A1) /2, A1)
Qui serait arrondi vers 0 à la demie.
EDIT2:
Mais dans le cas où vous voulez négatif de la moitié des numéros à tour loin de 0 (toutes les demi numéros de tour vers l'infini négatif):
=CEILING(B1 - 10 ^ -A1 /2, 10 ^ -A1)
EDIT3:
@ShawnKovac trouvé un problème avec ma réponse originale à cette question lorsque B1 < C1, donc j'ai pris le sien et l'a adapté pour tout A1:
=ROUNDUP(MAX(ABS(B1) - 10 ^ -A1 /2, 0), A1) * SIGN(B1)
Aussi ma réponse pour l'arrondi vers l'infini négatif renvoie une erreur lorsque B1 < C1, voici donc une mise à jour:
=CEILING(B1 - 10 ^ -A1 /2, SIGN(B1 - 10 ^ -A1 /2) * 10 ^ -A1)
0
et de la valeur à la ronde-10.60
, alors le résultat est-12.00
=ROUNDUP(B1 - sign(B1) * (10 ^ -A1) / 2, A1)
si nous prenons .2 ou -.2, il donne un -1 ou 1 respectivement. Nous allons simplifier ce faire, a1=0, de sorte que la formule se réduit à:ROUNDUP(B1 - SIGN(B1) * 1 / 2)
. Ainsi, lorsque b1 = .2, quand .5 est soustrait, il 'traverse' 0, ce qui n'est pas l'intention. puis -.3 est " roundup serait et ROUNDUP(-.3) = -1. Afin de 0,2 rendements -1. 🙁ROUNDUP(MAX(ABS(B1)-1/2,0))*SIGN(B1)
. J'ai donc utilisé Jayen malin de la formule, mais utilisés MAX avec l'ABS pour éliminer le bogue, puis multipliée par le SIGNE pour lui permettre de travailler pour les nombres positifs et négatifs.-(10^A1)/2<B1<(10^A1)/2
. Clairement pas l'intention. Je suis à jour de ma réponse.Selon le dataset, vous pouvez simplement soustraire de votre valeur, tant que vous savez qu'aucun de vos numéros serait invalidé par le faire.
=SI(ET(LEN(MOD(A2,1)>4),à DROITE(A2,1)="5"),ROUNDDOWN(A2,2),ROUND(A2,2))
Le mod 1 laissera juste le 0. et les décimales. Donc, si 3 décimales et vous voulez arrondir à 2, et la virgule a une longueur supérieure à 4 ("0." plus de décimales), cela peut indiquer que la virgule besoins de l'arrondissement. Si le dernier chiffre de la décimale est 5 alors utiliser la fonction rounddown fonctionnalité d'utiliser ronde.