php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.10.2004, 14:27  
Gast
 
Beiträge: n/a
Standard Von Float zu Integer ?

Hallo zusammen,

ich übe gerade PHP und hab ein Problem, daher meine Bitte mir zu helfen.

Es geht um folgendes:

echo $e=9900000000000015;
echo $A=(int) $e;


Ausgabe $e= 9.9E+015
Ausgabe $A= 1598472206

Wie kann ich richtig Parsen/Casten oder wie man es nennt sodass $e=9900000000000015 ist?

Ich bedanke mich bereits für die Mühe.
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 29.10.2004, 14:37  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

http://www.php.net/manual/de/language.types.integer.php

Zitat:
Umwandlung nach integer
Um einen Wert ausdrücklich nach integer zu konvertieren, benutzen Sie entweder die Umwandlung mittels (int) oder (integer). In den allermeisten Fällen ist es jedoch nicht notwendig die Umwandlung selbst vorzunehmen. Ein Wert wird automatisch konvertiert, falls ein Operator, eine Funktion oder eine Kontrollstruktur ein integer Argument erfordern. Sie können einen Wert auch mit der Funktion intval() in einen Integer umwandeln.
wozu also?
imported_Ben ist offline  
Alt 29.10.2004, 15:12  
Gast
 
Beiträge: n/a
Standard

Um folgendes geht es:

$query_art= mysql_query("SELECT ARTIKELNR, ARTIKEL FROM ARTIKELN");
$art_nr=mysql_fetch_assoc($query_art);
echo $art_nr["ARTIKELNR"];
if (!is_integer($art_nr["ARTIKELNR"])) {
echo intval($art_nr["ARTIKELNR"]);
}else echo "geht nicht!";
}

Ausgabe sollte:

Artikel : XXX
ArtkelNr: 99000000000000015

...sein


PHP aber wandelt die Artikelnummer in FLOAT / DOUBLE.

Wenn ich richtig verstanden habe, dann muss ich entweder ARTIKELNR kürzen oder das ganze vergessen, richtig?

Vielleicht ist das ganze auch nur ein Denkfehler und ich muss nur bei der Abfrage was ändern oder?
 
Alt 29.10.2004, 15:41  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

99000000000000015 ist ein wenig gross für einen Integer, ausser auf 64bit-Systemen.
Im Float werden auch schon die letzten Stellen fehlen. Warum nicht einfach als String verarbeiten? In MySQL beim Auslesen ein cast() oder convert() nach char? http://dev.mysql.com/doc/mysql/en/Cast_Functions.html

Im Zweifelsfall bietet sich bcmath() zum rechnen in PHP an.

PS: Welche PHP-Version?
__________________
mod = master of disaster
Waq ist offline  
Alt 29.09.2007, 01:20  
Erfahrener Benutzer
 
Registriert seit: 14.01.2006
Beiträge: 111
moose
Standard

Hi, ich habe auch ein typen-problem (glaub ich zumindest)

ich hatte folgenden code:
PHP-Code:
$price 12.34;
$cents = ($price floor($price))*100;
if(
$cents == 99){return TRUE;}
elseif(
$cents == 98){return TRUE;} 
und noch ein paar weitere elseif's
Ich dachte mir switch wäre da praktischer, also:
PHP-Code:
$price 12.34;
$cents = ($price floor($price))*100;
switch(
$price){
  case 
99: return TRUE;
  case 
98: return TRUE;

jedoch hat das nie true zurückgegeben. Nachdem ich folgendes geändert hatte, gings wieder:
PHP-Code:
$cents = (int)($price floor($price))*100
mir ist dann jedoch irgendwann aufgefallen, das manchmal das ergebnis um 1 zu klein ist (siehe http://de3.php.net/manual/de/languag...nteger.casting)
was kann ich da machen, dass es richtig konvertiert wird? ich habs auch schon mit intval() versucht und mit case 99.00 ... alles ohne erfolg
warum hat php probleme mit der konvertierung?

edit: mich interessiert die antwort immer noch, aber ich habs jetzt so gelöst:
PHP-Code:
if(substr_count($price'.')==1){
  
$price substr($price, -2);
  switch(
$price){
    case 
99: return TRUE;
    case 
98: return TRUE;
  }


__________________
http://www.martin-thoma.de
moose ist offline  
Alt 29.09.2007, 11:04  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Wofür ist denn überhaupt die $cents-Formel? Du multiplizierst den Cent-Wert mit 100?
Könntest du auch den Modulo-Operator für verwenden:
Code:
$value = (int)round($price * 100, 0) % 100;
Um (durch double erzeugte) Nachkommastellen zu entfernen benutz doch einfach round(). Da es um Geld geht, würde ich in Zukunft überlegen, Preise als Integer mit Cent-Einheit abzuspeichern.
Zergling-new 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
Type Hinting - must be an instance of integer, integer given mAy^daY PHP Tipps 2007 1 06.03.2007 14:55
Bereich um einen float left und float right Bereich andrew22 HTML, Usability und Barrierefreiheit 8 27.02.2007 18:27
Float für Fortgeschrittene axelnes HTML, Usability und Barrierefreiheit 5 12.04.2006 10:29
Float bei zwei DIVs HTML, Usability und Barrierefreiheit 14 29.01.2006 10:54
Im DIV ein DIV mit float HTML, Usability und Barrierefreiheit 8 21.12.2005 18:28
Integer in String umwandeln Luke_Skyscraper PHP Tipps 2005-2 3 07.08.2005 17:29
mehrere integer werte in eine spalte GrU3nL!nG Datenbanken 4 13.07.2005 17:05
[Erledigt] FLOAT Problem Datenbanken 2 17.06.2005 23:12
[Erledigt] arges float Problem HTML, Usability und Barrierefreiheit 9 30.04.2005 14:31
POST übergabe ist integer? seejay PHP Tipps 2005 6 10.04.2005 13:35
CSS: 2 Spalten á 50% ohne float HTML, Usability und Barrierefreiheit 2 31.03.2005 14:37
float: right; hängt unten raus HTML, Usability und Barrierefreiheit 6 31.03.2005 14:17
$_GET['var1'] prüfen ob Float PHP Tipps 2005 4 17.02.2005 17:57
Float mit bestimmter Länge ausgeben PHP Tipps 2005 2 08.01.2005 19:41
CSS: Probleme mit float:!! 18inch HTML, Usability und Barrierefreiheit 1 30.12.2004 13:55

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php float to int, php float to integer, php float int, float to int php, php int to float, php float in int, php float zu int, php float in integer, float to integer php, php float integer, php integer to float, php int float, php float in integer umwandeln, float int php, int to float php, php integer umwandeln, php float in int umwandeln, float zu int php, php float nach int, float integer php

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