Nachkommastellen...
ziddi
- php
Also ich wollte mal fragen ob jemand weiß wie ich die variable abfrage ,ob mehr als zwei nachkommastellen vorhanden sind und dann wenn es so ist auf 2 nachkommastellen rundet?
danke im vorraus,
zid
Hallo Zid,
hier ein Codeschnipsel von http://www.php.net/manual/en/function.sprintf.php
$zahl = 68.7578;
$formatted = sprintf("%01.2f", $zahl);
Gruß vom Horst
Hallo Zid,
hier ein Codeschnipsel von http://www.php.net/manual/en/function.sprintf.php
$zahl = 68.7578;
$formatted = sprintf("%01.2f", $zahl);Gruß vom Horst
das hilft mir aber nicht viel :(
naja ich brauch ungefähr so was in der art if($ergebnis [hat mehr als 2 nachkommastellen]= [runden]) kann mir da jemand helfen?
Hi Zid...
vielleicht hilft dir das ja.. verstehe noch nicht so ganz was
Du machen möchtest:
<?php
$zahl = .333;
if(ereg(".[0-9]{3,}$", $zahl)){
echo "Zahl $zahl hat mehr als 2 Nachkommastellen<br>\n";
$zahl = sprintf("%01.2f", $zahl);
}
echo $zahl;
?>
Gruß vom Horst
Hi Zid...
vielleicht hilft dir das ja.. verstehe noch nicht so ganz was
Du machen möchtest:
<?php
$zahl = .333;
if(ereg(".[0-9]{3,}$", $zahl)){
echo "Zahl $zahl hat mehr als 2 Nachkommastellen<br>\n";
$zahl = sprintf("%01.2f", $zahl);
}echo $zahl;
?>
Gruß vom Horst
ja ich meine halt das er halt nur runden soll wenn mehr als 2 nachkommastellen vorhanden sind soll er runden frag lieber nicht aber es muss halt so sein
Hi Zid...
<?php
$zahl = .333;
if(ereg(".[0-9]{3,}$", $zahl)){
echo "Zahl $zahl hat mehr als 2 Nachkommastellen<br>\n";
$zahl = sprintf("%01.2f", $zahl);
}echo $zahl;
?>
dieses Skript prüft, ob es mehr als Zwei Nachkommastellen gibt..
und rundet nur dann...
Gruss vom Horst
Hi Zid...
<?php
$zahl = .333;
if(ereg(".[0-9]{3,}$", $zahl)){
echo "Zahl $zahl hat mehr als 2 Nachkommastellen<br>\n";
$zahl = sprintf("%01.2f", $zahl);
}echo $zahl;
?>
dieses Skript prüft, ob es mehr als Zwei Nachkommastellen gibt..
und rundet nur dann...Gruss vom Horst
naja da stimmt was nicht mit $zahl = .333; weil er dann sofort denkt das das ergebnis 0.333 wär
also er soll ja überprüfen ob mehr als 2 nachkommastellen vorhanden wenn ja soll er runden wenn nicht nicht aber dann soll er auch keine 2 nachkommstellen (nullen) anzeigen
<?php
$array = array(3.0, 3.00, 3.980, 3.543,.33);
foreach ($array as $zahl){
if(ereg(".[0-9]{3,}$", $zahl)){
echo "Zahl $zahl hat mehr als 2 Nachkommastellen<br>\n";
$zahl = sprintf("%01.2f", $zahl);
}
else{
echo "Zahl $zahl hat nicht mehr als 2 Nachkommastellen<br>\n";
}
echo $zahl."<br>";
}
?>
bei welchen Zahlen macht denn das obige Skript nicht was Du willst???
<?php
$array = array(3.0, 3.00, 3.980, 3.543,.33);
foreach ($array as $zahl){
if(ereg(".[0-9]{3,}$", $zahl)){
echo "Zahl $zahl hat mehr als 2 Nachkommastellen<br>\n";
$zahl = sprintf("%01.2f", $zahl);
}
else{
echo "Zahl $zahl hat nicht mehr als 2 Nachkommastellen<br>\n";
}echo $zahl."<br>";
}?>
bei welchen Zahlen macht denn das obige Skript nicht was Du willst???
schon o ich brauch jetzt noch nen anderen tip nämlich hab ich das problem das er in der eingabe keine kommas erkennt nur die . aber ich möchte ja das er die kommas erkennt deswgen hab ich das hier gemacht:
if ($feld1 == "," ) {
echo str_replace (",",".",$feld1);
}
if (feld2 == "," ) {
echo str_replace (",",".",$feld2);
}
naja es klappt aber nicht. :( Ist da was falsch dran oder hab ich was vergessen?
mfg
zid
hi
da du es anscheinend nicht gelesen/ verstanden hast,
hier der Code
$feld1 = str_replace (",",".",$feld1);
$feld2 = str_replace (",",".",$feld2);
$feld1 = number_format($feld1, 2);
$feld2 = number_format($feld2, 2);
gruß vom horst
hi
da du es anscheinend nicht gelesen/ verstanden hast,
hier der Code$feld1 = str_replace (",",".",$feld1);
$feld2 = str_replace (",",".",$feld2);$feld1 = number_format($feld1, 2);
$feld2 = number_format($feld2, 2);gruß vom horst
oh nein nächster fehler wenn diesen code umdrehe um das ergebnis halt auch mit , auszuwerten rundet er nicht mehr???
<html>
<head>
<title>Taschenrechner</title>
</head>
<body>
<form name="taschenrechner" method="post" action="test.php">
<input name="zahl1" type="text" id="zahl1">
<select name="opt" id="opt">
<option value="+">+</option>
<option value="-">-</option>
<option value=":">/</option>
<option value="*">*</option>
</select>
<input name="zahl2" type="text" id="zahl2">
<input type="submit" name="Submit" value="Abschicken">
</form>
<?php
$zahl1 = $_POST["zahl1"];
$zahl2 = $_POST["zahl2"];
$opt = $_POST["opt"];
$zahl1 = str_replace (",",".",$zahl1);
$zahl2 = str_replace (",",".",$zahl2);
if(!is_numeric($zahl1) || !is_numeric($zahl2)){
echo "Bitte geben Sie die Zahlen korrekt an!";
}
else{
switch ($opt) {
case "+":
$ergebnis = $zahl1 + $zahl2;
break;
case "-":
$ergebnis = $zahl1 - $zahl2;
break;
case ":":
$ergebnis = $zahl1 / $zahl2;
break;
case "* ":
$ergebnis = $zahl1 * $zahl2;
break;
}
echo" $zahl1 $opt $zahl2 = <b>$ergebnis</b><br>";
echo str_replace (".",",",$ergebnis)."<br>";
if(ereg(".[0-9]{3,}$", $ergebnis)) {
echo number_format($ergebnis,2);
}
}
?>
</body>
</html>
Hallo ziddi,
naja ich brauch ungefähr so was in der art if($ergebnis [hat mehr als 2 nachkommastellen]= [runden]) kann mir da jemand helfen?
warum muss es so sein? runde doch einfach immer, dann werden die mit weniger als 2 Nachkommastellen halt auch gerundet (ich würde das mit round($zahl,2) machen), aber wenn du unbedingt wills, bitte:
$t = explode($zahl);
$if(strlen($t[1])>2) round($zahl,2);
aber ungetestet :-)
Grüße aus Nürnberg
Tobias