Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > Probleme mit Floats
Antwort
 
Themen-Optionen
Alt 14.06.2007, 16:25   Nach oben    #1
BIN EIN KRASSA HELD!!!111
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.185
Standard Probleme mit Floats

folgender Code ist das Problem:

PHP-Code:
<?php
echo '<h1>php normal addition/subtraction </h1>';
$ergebnis = (float) 0;
var_dump($ergebnis); echo '<br />';
$ergebnis $ergebnis + (float)126;
var_dump($ergebnis); echo '<br />';
$ergebnis $ergebnis + (float)123.8;
var_dump($ergebnis); echo '<br />';
$ergebnis $ergebnis - (float)126;
var_dump($ergebnis); echo '<br />';
$ergebnis $ergebnis - (float)123.8;
var_dump($ergebnis); echo '<br />';echo '<br />';
echo 
'<h1>php normal addition/subtraction *10</h1>';
$ergebnis = (float) 0;
var_dump($ergebnis); echo '<br />';
$ergebnis $ergebnis + (float)126*10;
var_dump($ergebnis); echo '<br />';
$ergebnis $ergebnis + (float)123.8*10;
var_dump($ergebnis); echo '<br />';
$ergebnis $ergebnis - (float)126*10;
var_dump($ergebnis); echo '<br />';
$ergebnis $ergebnis - (float)123.8*10;
var_dump($ergebnis/10); echo '<br />';echo '<br />';
bcscale(3);
echo 
'<h1>Using bcmath.bcadd() with .</h1>';
bcscale(3);
$ergebnis '0';
var_dump($ergebnis); echo '<br />';
$ergebnis bcadd((string)$ergebnis,(string)126);
var_dump($ergebnis); echo '<br />';
$ergebnis bcadd((string)$ergebnis,(string)123.8);
var_dump($ergebnis); echo '<br />';
$ergebnis bcadd((string)$ergebnis,(string)-126);
var_dump($ergebnis); echo '<br />';
$ergebnis bcadd((string)$ergebnis,(string)-123.8);
var_dump($ergebnis); echo '<br />';
Ergebnis hier:
http://www.robo47.net/public/develop...at-problem.php

Die Werte kommen ursprünglich aus einer Datenbank, das Problem aktuell ist, dass ich ja mit PHP anscheinend nicht sinnvoll rechnen kann, wenn es sich um Bruchzahlen handelt wie man sieht, einzig die 2 unschönen Wege führen zum Ziel, gibt es dazu ein paar Tips ? Anregungen ?


P.S. Hab das Gefühl hier gabs schonmal nen Thread zum Thema, hab aber leider nichts gefunden.
mfg
robo47
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.06.2007, 16:30   Nach oben    #2
Mensch
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
Standard

Das ist aber normal. Float hat doch nur 7(bin nicht sicher) Nachkommastellen, wenn du erst addierst und dann subtrahierst bekommst du Probleme weil addieren machste mit 0.00000001 und subtrahieren dann mit 0.00000004, dabei kommt dann die Fehler zustande.
bc.add() umgeht diese Problematik.
Ich würde in jeder Sprache mit richtigen Funktionen rechnen.
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.06.2007, 18:39   Nach oben    #3
Projektleiter
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.225
Standard

ist das nicht eine Frage der Einstellung in der php.ini wieviele Stellen float hat?
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.06.2007, 18:56   Nach oben    #4
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Zitat:
Zitat von Jann Hendrik Beitrag anzeigen
ist das nicht eine Frage der Einstellung in der php.ini wieviele Stellen float hat?
Code:
; The number of significant digits displayed in floating point numbers.
precision    =  12
Ändert aber ja an dem Problem nichts.


Nachtrag:
Auch hier nachzulesen.
http://de.php.net/manual/en/ini.core.php#ini.precision

Geändert von Ben (14.06.2007 um 18:58 Uhr).
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme mit Strato / Arcor? MrNiceGuy Plauderecke 15 28.12.2006 23:35
Caching mittels dbm-Dateien, Probleme mit dba_popen() Ben PHP-Programmierung 4 27.07.2006 13:23
Probleme mit Anhängen Ben Archiv 0 16.06.2006 16:13
Probleme rund ums Formular Sacre PHP-Programmierung 24 18.04.2006 11:31
Layout Probleme VipViper2000 Desktop-Applikationen und Grafik 8 13.09.2005 22:35


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:48 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44