Float: anzahl der kommastellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
lionking
User
Beiträge: 28
Registriert: Mittwoch 28. April 2004, 16:03

hallo erstmal,

ich möchte zwei ganze (grosse) Zahlen durcheinander teilen, aber ich bekomme nur 16 nachkommastellen.

gibt es ne möglichkeit noch mehr stellen zu berechnen lassen?

Danke schonmal

MFG
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi lionking,

was heißt nur 16 Nachkommastellen ;)

mxNumber könnte interessant für Dich sein.


Gruß

Dookie
lionking
User
Beiträge: 28
Registriert: Mittwoch 28. April 2004, 16:03

was is das und wo gibs das?
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

wenn du auf den link klickst kommst du auf die seite, das ist ein Pytonmodul u.a. für beliebig genaue Fliesskommazahlen.


Gruß

Dookie
lionking
User
Beiträge: 28
Registriert: Mittwoch 28. April 2004, 16:03

ok habs gefunden, aber nich verstanden, und auch keine anleitungen gefunden, ausser die auf der seite: http://www.egenix.com/files/python/mxNumber.html
aber daraus bin ich nicht schlau geworden...
kann mir jemand helfen?

Code: Alles auswählen

#programm giebt die fibonacci-zahlen mit ihren teilern aus...
from mx.Number import *



a=Number.Integer(0)
b=Number.Integer(1)

while b<100000000000000000:
    
    print a, '/', b, '=', Float(a, 128)/Float(b, 128)
    a,b = b,a+b
PS:irgendwie geht BBcode nicht(ich habs aktiviert...

PPS: das mit precision geht nicht, da kommt n syntax.error...
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

du hattest bbcode deaktiviert, ich habs nun aktiviert

wenn Du verrätst was du nicht verstehtst, kann dir sicher wer helfen.


Gruß

Dookie
lionking
User
Beiträge: 28
Registriert: Mittwoch 28. April 2004, 16:03

also das programm gibt mir immernoch nur 16stellige zahlen, und ich weiss nich worans liegt, was ich falsch gemacht habe, und warum "precision"nich geht...

achja Danke für die superschnellen antworten, das is ja fast wie chatten :wink:

PS: smilies gehen auch nicht obwohl sie an sind...
oder mach ich was falsch?
Zuletzt geändert von lionking am Donnerstag 29. April 2004, 12:55, insgesamt 1-mal geändert.
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

lies einfach mal genau was hinter den checkboxen steht. :shock:
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Ich würds mal so versuchen

Code: Alles auswählen

#programm giebt die fibonacci-zahlen mit ihren teilern aus...
from mx import Number



a=Number.Integer(0)
b=Number.Integer(1)

while b<100000000000000000:
   
    print a, '/', b, '=', Number.Float(a, 128)/Number.Float(b, 128)
    a,b = b,a+b 

Dookie
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

oder besser so:

Code: Alles auswählen

#programm giebt die fibonacci-zahlen mit ihren teilern aus...
from mx import Number



a=Number.Integer(0)
b=Number.Integer(1)

while b<100000000000000000:
   
    print "%d / %d = %.32f" % (a,b,Number.Float(a, 128)/Number.Float(b, 128))
    a,b = b,a+b 
Dookie
lionking
User
Beiträge: 28
Registriert: Mittwoch 28. April 2004, 16:03

Danke, schon besser, aber er gibt mir nach ner ganzen reihe von zahlen(die ich auch haben will eine Fehlermeldung:

Code: Alles auswählen

1134903170 / 1836311903 = 0.61803398874989490000000000000000
Traceback (most recent call last):
  File "C:\Python233\fibonacci.py", line 11, in ?
    print "%d / %d = %.32f" % (a,b,Number.Float(a, 128)/Number.Float(b, 128))
TypeError: int argument required

ausserdem sind die zusätzlichen nachkommastellen nur nullen...

juhuu jeztz hab ich das mit bbcode und smilies verstanden :D
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

und so?

Code: Alles auswählen

#programm gibt die fibonacci-zahlen mit ihren teilern aus...
from mx import Number

a=0
b=1

while b<100000000000000000:
   
    print "%d / %d = %s" % (a, b, (Number.Float(a, 128)/Number.Float(b, 128)).format(10,32))
    a,b = b,a+b
Gruß

Dookie
lionking
User
Beiträge: 28
Registriert: Mittwoch 28. April 2004, 16:03

da kommt sowas

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Python233\fibonacci.py", line 9, in ?
    print "%d / %d = %s" % (a, b, (Number.Float(a, 128)/Number.Float(b, 128)).format(10,32))
TypeError: format() takes exactly 1 argument (2 given)
aber wenn ich die 10 bei .format() wegnehme gehts, jedoch wieder nur mit 16nachkommastellen

noch ne frage: was bedeutet die 128 bei Number.Float(a, 128)? die kann man auch weglassen, da ändert sich nix
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

die 128 ist die Anzahl von Bits die für die Floatdarstellung verwendet werden.
Sorry mxNumber lässt sich bei mir leider nicht installieren. Und ich kanns selber nicht testen.


Gruß

Dookie
Antworten