2017-01-10 3 views
0

Heute bemerkte mich auf IronPython2.7 folgendes Problem:(Eisen) Python Formatierung Problem mit Modulo-Operator & "negativer Null"

Wenn wie so ein format_string Formatierung, erhalte ich ein "Null negativ". Ich bekomme das gleiche Ergebnis, wenn ich Python2.7 oder Python3.4 anstelle von IronPython verwende.

>>> "%.2f" % -0.004 
'-0.00' 

Dann wurde mir klar, dass ich wie so die negativ Null, indem zwei Argumente an das Format-String loswerden kann:

>>> "%s%.2f" % ('x', -0.004) 
'x0.00' 

ein zufälliges Zeichen ‚x‘. Also formatiere ich eine andere Zeichenfolge vor dem Float-Wert und das Minus verschwindet. Das funktioniert nicht mit python2.7 und Python3.4 aber, wo ich bekommen:

>>> "%s%.2f" % ('x', -0.004) 
'x-0.00' 

Weiß jemand, was hier vor sich geht?

Was ist der Zweck der formatierten "Negativ Null" überhaupt?

+0

Klingt wie ein Fehler in IronPython. Es sollte der CPython-Referenzimplementierung folgen, wo immer es möglich ist. –

+0

Ich bin mir nicht sicher, ob Sie das wissen, aber die negative Null ist ein perfekt gültiger Gleitkommawert: '-0.0'. Es unterscheidet sich von (aber gleich) positivem Nullpunkt. Keine Ahnung, warum IronPython das Minuszeichen mit einem anderen Wert in der Formatzeichenfolge verschwinden lässt. – Blckknght

Antwort

0

(herausgegeben @MarkDikinson Kommentar zu berücksichtigen)

Sie zunächst die Zahl formatieren, dann die printf -ähnlichen tun Formatierung:

"%.2f" % (round(-0.004, 2)+0) 

Die +0 ist es die negative Null-Zeichen zu entfernen .

round können auch ein ndigits Argument, um festzulegen, wie viele Stellen Sie müssen für die Rundung der Zahl selbst (nicht über Display sprechen, die von "%.2f" gehandhabt wird).

+1

Warum verwenden Sie NumPy 'Around' anstelle von Pythons eingebauter' Round'-Funktion? (Und Sie wollen wahrscheinlich auf 2 Dezimalstellen runden ...) –

+0

@MarkDickinson Sie haben Recht! Ich benutze die ganze Zeit bei der Arbeit numpy, aber es gibt auch eine Standardrunde;) – mguijarr

+1

@mguijarr Installieren von numpy für ironpython könnte problematisch sein – Odomontois

Verwandte Themen