php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.10.2005, 21:57  
Erfahrener Benutzer
 
Registriert seit: 30.11.2004
Beiträge: 129
Apfeltyp
Standard floor - ein rätsel?

Hi allezusammen,

kurz und knapp, bisher dachte ich immer floor() rundet ab sofern es was zu runden gibt.

floor(116) = 116 (gibt ja nix zu runden)
floor(100*1.16) sollte normalerweise auch 116 ergeben oder nicht?

Aber in dem Fall kürz er mir das Ergebnis von 100*1.16 (was ja 116 ist) auf 115.

Also irgendwie hab ich da was nicht mitbekommen

Wie kann man nun Ganzzahlig teilen ohne das "glatte" Ergebnisse noch um eins abgerundet werden??
Apfeltyp ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 14.10.2005, 22:11  
Gast
 
Beiträge: n/a
Standard

versuchs mal mal mit bcdiv($a, $b);

/edit: ich spekuliere mal:
die lösung des rätsels liegt vielleicht darin, dass bei php floatwerte intern als z.b. 115.999999... vorliegen, floor macht dann wohl nichts anderes als die stellen vor dem komma abzuschneiden und auszugeben (bzw. wenn negativ noch -1 zu rechnen) dementsprechend würde auch floor(-(100*1.16))*(-1); funktionieren (wieso nicht auch mal umständlich?)
 
Alt 14.10.2005, 22:30  
Erfahrener Benutzer
 
Registriert seit: 30.11.2004
Beiträge: 129
Apfeltyp
Standard

Sorry, aber da brauche ich noch mehr Infos

Was ist mit $a und $b?
Wenn ich bcdiv(rechnung); schreibe kommt ne fehlermeldung
Unter PHP-Faq ist kein Eintrag zu bcdiv zu finden.

Kurz:

PHP-Code:
<?php
echo floor(100*1.16); // liefert 115 zurück (wie muss ich bcdiv anwenden damit 116 kommt?
?>
Apfeltyp ist offline  
Alt 14.10.2005, 22:33  
Gast
 
Beiträge: n/a
Standard

das war eher die antwort auf die frage wie man ganzzahlig teilen kann dann wäre das wie floor($a/$b);
http://de.php.net/bcdiv

wie gesagt, sonst machs eben mit dem trick:
PHP-Code:
<?php
-floor(-(100*1.16));
?>
 
Alt 14.10.2005, 22:35  
Gast
 
Beiträge: n/a
Standard

PHP-Code:
<?php

// eine Krücke: Umwandlung in eine Zeichenkette, so dass interne Ungenauigkeiten wegfallen
echo floor((string)(100*1.16));
echo 
' | ';
// bcmul liefert auch eine Zeichenkette
echo floor(bcmul(100,1.16));
?>
 
Alt 14.10.2005, 22:43  
Gast
 
Beiträge: n/a
Standard

Also wenn es wiedermal um Preisangaben geht, wäre floor() wohl fehl am Platz, oder ?
 
Alt 14.10.2005, 22:45  
Erfahrener Benutzer
 
Registriert seit: 30.11.2004
Beiträge: 129
Apfeltyp
Standard

Jo danke ... Wiedermal ins Schwarze getroffen
__________________
Apfeltyp ist offline  
Alt 14.10.2005, 22:48  
Gast
 
Beiträge: n/a
Standard

Benutze lieber sprintf() oder number_format(), aber niemals bei Preisgaben mit floor(), ceil() oder sonstwas runden.

Hatten wir alles schon hier
 
Alt 14.10.2005, 22:57  
Erfahrener Benutzer
 
Registriert seit: 30.11.2004
Beiträge: 129
Apfeltyp
Standard

Jo also es ging um Preise (MwSt)

Eine Frage noch:

Wenn ich nun den Preis 1,80EUR habe, das macht mit MwSt 2,088 (also 2,09EUR).

bcmul($Preis,1.16,2); rundet mir das ganze jedoch auf 2,08 EUR ab. Gibt es da noch ne Lösung?
__________________
Apfeltyp ist offline  
Alt 14.10.2005, 22:58  
Gast
 
Beiträge: n/a
Standard

wäre das nicht was für number_format() wie von CIX88 vorgeschlagen?
 
 


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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php ganzzahlig teilen, 100 floors losung, 100 floors lösungen, losung 100 floors, ganzzahlig teilen, php floor problem, ganzzahlig teilen php, php floor, floor 100 lösungen, lösung für 100 floors, ganzzahliges teilen php, php ganzzahlige teilung, php ganzzahliges teilen, 100 floor lösung, floor 100 lösung, php floor fehler, floor 100, lösungen für 100 floors, php ganzzahlig tilen, php floor probleme

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:07 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.