php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.10.2006, 15:57  
Erfahrener Benutzer
 
Registriert seit: 03.04.2006
Beiträge: 222
<Daniel>
Standard Ausgabe von xxx stelliger Zahl

Hi,
zuersteinmal der Quellcode:

PHP-Code:
<?php
error_reporting
(E_ALL);

$zahl_pi = (float) 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679;

var_dump($zahl_pi);

?>
Kann mir jemand sagen, wieso die Zahl bei der Ausgabe von der Variable bei '3.14159265359' abgeschnitten wird? Muss ich evtl. einen anderen Datentyp verwenden?

Gruß
&lt;Daniel&gt; ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.10.2006, 16:02  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Hast du die im Kopf ausgerechnet?
mögliche Gründe
Zitat:
Die Größe einer Fließkomma-Zahl ist plattformabhängig, dennoch stellt ein Maximum von ~1.8e308 mit einer Genauigkeit von 14 Nachkomma-Stellen einen üblichen Wert dar (das entspricht 64-Bit im IEEE-Format).
Zitat:
Es ist ziemlich normal, dass einfache Dezimalzahlen wie 0.1 oder 0.7 nicht in ihre internen binären Entsprechungen konvertiert werden können, ohne einen kleinen Teil ihrer Genauigkeit zu verlieren. Das kann zu verwirrenden Ergebnissen führen. So wird floor((0.1 + 0.7) * 10) normalerweise 7 statt des erwarteten Wertes 8 zurück geben (als Ergebnis der internen Entsprechung von 7.9999999999...).

Das gründet sich auf die Tatsache, dass es unmöglich ist, manche Dezimal-Zahlen durch eine endliche Anzahl an Nachkomma-Stellen darzustellen. Dem Wert 1/3 entspricht z.B. der interne Wert von 0.3333333. . ..
nikosch ist offline  
Alt 18.10.2006, 16:07  
Erfahrener Benutzer
 
Registriert seit: 03.04.2006
Beiträge: 222
&lt;Daniel&gt;
Standard

Hm, die ist doch aber nicht unendlich ^^
Und was macht es für einen Unterschied ob man die Zahl so:

31415926535897932384626433832795028841971693993751 05820974944592307816406286208998628034825342117067 9

oder so:

3.141592653589793238462643383279502884197169399375 10582097494459230781640628620899862803482534211706 79

darstellt? 'Oo
&lt;Daniel&gt; ist offline  
Alt 18.10.2006, 17:22  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Auch INTEGER Werte erreichen irgendwann eine Grenze (Overflow)
speicher das ganze als String und benutz eine der PEAR-Math Pakete um damit zu rechnen falls nötig.
Zergling-new ist offline  
Alt 18.10.2006, 17:31  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Andernfalls könnte man auch die Konstante M_PI verwenden die bei PHP automatisch definiert ist.
Flor1an ist offline  
Alt 18.10.2006, 18:33  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

...und zum Rechenen dann ggf. bcmath[1].

[1] http://php.net/manual/en/ref.bc.php

Basti
Basti ist offline  
Alt 18.10.2006, 19:20  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von <Daniel>
Und was macht es für einen Unterschied ob man die Zahl so:

31415926535897932384626433832795028841971693993751 05820974944592307816406286208998628034825342117067 9

oder so:

3.141592653589793238462643383279502884197169399375 10582097494459230781640628620899862803482534211706 79

darstellt? 'Oo
Wo soll denn der Unterschied sein?
Beide können nicht dargestellt werden.

Oder willst Du sagen, dass PHP mit der ersten Zahl etwas anfangen kann?

Bei 64 Bit Integers würde ich mal grob schätzen, dass die Zahl nur ein Drittel der Länge haben dürfte als da steht.
Bei 32 Integers nochmal nur die Hälfte.


Wenn Du selbst Funktionen für groooooooße Zahlen schreiben willst, kannst Du ja mal bei Donald E. Knuth vorbeischauen. In seiner "Art of Computer Programming" gibt's auch ein paar Kapitel über Rechnen mit großen Zahlen.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
zahlen mit zeilenumbruch nach x-ter zahl ausgeben centauro PHP Tipps 2008 2 09.02.2008 14:22
tabellenumbruch nach ausgabe von x spalten Promaetheus PHP Tipps 2006 2 12.09.2006 16:26
Problem mit Ausgabe bzw. Abfrage mit ORDER BY mayer Datenbanken 7 02.07.2006 21:45
preg_replace: Zahl anstatt String FI-DD PHP-Fortgeschrittene 4 02.10.2005 14:50
Ausgabe der Auswahlliste PHP Tipps 2005-2 6 21.09.2005 13:43
3 Tabellen verbunden -- Ausgabe in einer Spalte Datenbanken 4 06.09.2005 10:43
zahl ausgeben wenn gerade Tschuu PHP Tipps 2005-2 6 07.07.2005 19:20
[Erledigt] Geteilte Ausgabe an den Browser... PHP-Fortgeschrittene 4 01.07.2005 13:07
Prüfung auf Zahl, Wert in PHP? PHP Tipps 2005-2 1 07.06.2005 10:32
Ausgabe von Zahl zweistellig erzwingen -????? PHP Tipps 2005 2 31.03.2005 14:23
array ausgabe mit positions zahl jens76 PHP Tipps 2005 7 17.03.2005 16:14
$zahl in eine echte Zahl im Script?!? Matthiasnet PHP Tipps 2005 3 07.03.2005 22:17
Formulareingabe prüfen auf Zahl, bzw. Feld leer ist PHP Tipps 2004-2 2 02.12.2004 09:39
Ausgabe nur dann, wenn htmlspecialchars() verwendet PHP Tipps 2004 1 27.10.2004 21:17
Sortierung der Ausgabe PHP-Fortgeschrittene 3 08.10.2004 09:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
xxx zahl

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:20 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.