2017-02-14 2 views
1

Ich habe einen Code schneiden, wo ich so ein paar Zahlen bekam:Wie Dezimalzahl mit PHP

92.682926829268 

Ich möchte sie so schneiden:

92.68 

Dies ist mein Code :

<td><?php if (($row['TotalMatch']) > 10){ echo ($row['OK_05']/$row['TotalMatch']) * 100; } ?></td> 

ich mit Boden und rund versucht, aber ich dieses Beispiel ich am Anfang der Post zeigte (92,682926829268 i tatt 92,68)

Vielen Dank für Ihre Aufmerksamkeit

Grüße!

BEARBEITEN Können Sie mir ein Beispiel mit meinem Code geben? Danke

+5

_round (92.682926829268, ** 2 **); _ sollte dein Freund sein –

+1

* aber ich bekomme nicht, was ich will * - Bitte erarbeiten. Wir können deine Gedanken nicht lesen. – Mike

+2

Ja, was _do_ bekommen Sie? Der Code in Ihrer Frage enthält keine Etage oder Runde. Wenn Sie zeigen können, was Sie mit diesen Funktionen gemacht haben, kann Ihnen jemand sagen, warum es Ihnen nicht das gewünschte Ergebnis gebracht hat. –

Antwort

2

Der Ausdruck Format Sie versuchen, ist diese verwenden:

($row['OK_05']/$row['TotalMatch']) * 100 

Also je nachdem, was Sie rund um das gehen zu entscheiden Bedürfnisse Funktion nutzen zu können Ausdruck.

Für die zu verwendende Funktion müssen Sie eine auswählen, die eine Zeichenfolge zurückgibt, kein Float.

Wenn Sie round verwenden und Ihr Ausdruck einen Gleitkommawert zurückgibt, der auf eine Zahl mit zwei Nullen nach dem Komma rundet, werden die abschließenden Nullen nicht im Ergebnis angezeigt. Beispiel: echo round(92.0006829268, 2) zeigt 92, nicht92.00 an. Verwenden Sie daher nicht round, wenn Sie sicherstellen müssen, dass immer zwei Dezimalstellen angezeigt werden. round ist eine mathematische Funktion, keine Formatierungsfunktion.

floor ist wirklich überhaupt nicht nützlich, da es eine Zahl ohne Dezimalstellen zurückgibt.


Ein einfacher Weg ist sprintf zu verwenden, wie in einigen der anderen Antworten gezeigt.

echo sprintf("%.2f", ($row['OK_05']/$row['TotalMatch']) * 100); 

Das erste Argument ist sprintf"%.2f", welche eine Format-String ist, der anzeigt, dass das zweite Argument als Schwimmer mit zwei Dezimalstellen angezeigt werden sollen. Das zweite Argument ist dein Ausdruck.

Die Verwendung von bcdiv wie in der anderen Antwort vorgeschlagen funktioniert auch, aber es funktioniert ein wenig anders, sprintf und wird in einigen Fällen ein etwas anderes Ergebnis produzieren.

sprintf rundet auf die Anzahl der Dezimalstellen angegeben, so zum Beispiel

echo sprintf("%.2f", 926.89/10); // outputs 92.69 

und bcdiv statt gestutzt werden, so

echo bcdiv(926.89, 10, 2);   // outputs 92.68 

Unabhängig davon, welche eines dieser Werke für Sie tun.

+0

Es ist perfekt, Danke! – James69

3

Verwenden Sie sprintf(), um die Nummer zu formatieren.

echo sprintf("%.2f", 92.682926829268);

Beispiel: https://3v4l.org/U87T9

+0

Können Sie mir bitte in meinem Beispiel zeigen? weil ich nicht weiß, wie ich es in meinen Code einfügen kann. Danke – James69

2

können Sie die Rundenfunktion verwenden

$var = 92.682926829268; 
$var = round($var, 2) 

oder benutzen sprintf (%.2f schneidet die Zahl)

$var = sprintf("%.2f", $var); 
-1

Versuchen sprintf wie unten:

<?php 
$mynumber = 98.343434; 
echo sprintf('%.2f', $mynumber); // this will output 98.34 
0

Sie bcdiv()

bcdiv($row['OK_05'], ($row['TotalMatch'] * 100), 2);