2016-07-04 11 views
-3

In Python weiß jemand, wie unbedeutend 0, das heißtFloat Multiplikation

x=9999.0 
y=.01 
print x*y 

Der Ausgang ist 99.99 zu speichern, aber ich will 99.990 .Can das passieren?

Ich bin mir nicht sicher, ob die Formatierung dies erreichen kann.In der Nussschale muss ich 0 's speichern.

So hat es generic.It sein auch

x=9999.5 
y=.01 

Dann brauchen nicht sein können wir there.Only als Orte der Formatierung wir verlieren 0 .Auch es müssen nicht 5 Ziffern always.It weniger sein kann oder mehr.So müssen wir die 0 erkennen wir verlieren und dann anhängen

+1

'99.99' ist das gleiche wie '99.990'. Was Sie suchen, ist die Formatierung von Zeichenfolgen. Lesen Sie https://pyformat.info/ für ein Intro. –

+0

@KlausD. Ich kann String-Formatierung nicht verwenden, da es '9998.5' *' .01' sein kann .... dann wird es in diesem Fall nicht funktionieren ... wie ich es generisch machen kann, '0's – vks

+0

zu speichern Dann geben Sie eine Liste von floats (die Ergebnisse für Ihre Berechnung und die gewünschte Ausgabe des Drucks! –

Antwort

2

Sie könnten das Dezimalsystem Modul verwenden:

>>> from decimal import * 
>>> getcontext().prec = 5 
>>> Decimal(9999.0) * Decimal(0.01) 
Decimal('99.990') 
+0

Können wir diese 'getcontext(). Prec' von einer Zahl bekommen? Wie wenn ich' 9999.5' sage, können wir das dann programmatisch als '5' bekommen? – vks

+0

Vielleicht können Sie Ihre Nummer in eine Zeichenfolge konvertieren und die Zeichen nach dem Entfernen zählen. und - – navit

+0

@navit ja ich kann das tun, aber wollte nur wissen, "Dezimal" -Modul bietet etwas – vks

0

Sie können die Anzahl der Zahlen nach dem Dezimaltrennzeichen mit string formatting angeben. Versuchen Sie, diese in der Konsole:

>>> print '%.3f' % (9999.0*.01) 
99.990 
+0

Irgendwie müssen Sie Ihre Präzision beim Arbeiten mit Floats definieren. Ich verstehe nicht, was Sie meinen, indem Sie Nullen speichern. – navit

0

funktioniert in Version 2,7

x=9999.0 
y=.01 
print '%.3f' % (x*y) 

Lesen Sie mehr über Python Formatierung here