2016-11-24 4 views
0

Ich möchte Dezimalzahl abzurunden wie folgt: -Round Dezimalzahl für Ratings mit Python

n = 3.2 result n = 3 
n= 3.6 result n= 4 

Grundsätzlich, wenn Dezimalzahl zwischen 0,0 bis 0,4 ist, dann sollte es abrunden und wenn Dezimalzahl zwischen 0,5 bis ist .9 dann sollte es zusammenfassen.

n = 3.0 result = 3 
n = 3.5 result = 3.5 
+1

warum? 'n = 3.5 result = 3.5' ​​ –

+0

Ich brauche 3,5 sollte nur 3,5 ergeben. round() rundet die Zahl nach oben oder unten ab. Ich möchte sie auch in der Mitte runden. –

+3

Was sollte .45 Runde zu? Was hast du probiert? – Sayse

Antwort

1

Wie ich Ihren Anwendungsfall zu verstehen, Sie

def r(x): 
    return round(x * 2.0)/2.0 

Beispiele verwenden sollten:

r(3.4) -> 3.5 
r(3.24) -> 3.0 
r(3.25) -> 3.5 
r(3.74) -> 3.5 
r(3.75) -> 4.0 
0

Verwendung

import math 
print math.ceil(x) and math.floor(x) 

oder

def round(x): 
    if (n % int(x) == 0.5): 
     return x 
    else: 
     return round(n=x) 

print (round_(3.8)) 
4  
print (round_(3.5)) 
3.5 
print (round_(3.2)) 
3 

oder überprüfen Sie diese https://stackoverflow.com/a/29308619/6107715

1

Try this,

Sie haben eine benutzerdefinierte Rundungsfunktion nach Ihren requireme machen nts.

def round_(n): 
    if n-int(n) == 0.5: 
     return n 
    else: 
     return round(n) 

Ergebnisse

In [21]: round_(3.6) 
Out[21]: 4.0 

In [22]: round_(3.5) 
Out[22]: 3.5 

In [23]: round_(3.2) 
Out[23]: 3.0 
+0

Warum verwenden Sie 'str()'? Wie wäre es mit 'wenn n-int (n) == 0.5'? –

+0

Ja, dein Vorschlag ist gut. Danke aktualisiert. –

2

Sie verwenden m odulus % oder subtrahieren - von int:

def round_(n): 
    if (n % int(n) == 0.5): 
     return n 
    else: 
     return round(n) 

print (round_(3.6)) 
4  
print (round_(3.5)) 
3.5 
print (round_(3.4)) 
3 

def round_(n): 
    if (n - int(n) == 0.5): 
     return n 
    else: 
     return round(n)