Ich möchte eine float Nummer in einer PHP-Zeichenfolge anzeigen.

Etwas wie:

My float number is: 0.00003485

Aber wenn ich Echo benutze, sehe ich es so:

My float number is: 3.485E-5

Ich weiß auch, dass ich printf("%.10f",$float) Code verwenden kann, aber ich muss ihn an vielen Stellen in meiner Zeichenfolge verwenden, sodass ich printf nicht verwenden kann.

Welchen Code sollte ich für eine Zeichenfolge verwenden, um Floats so anzuzeigen, wie sie sind? Ich möchte diese kurzgeschlossene Nummer (3.485E-5) nicht.

-2
Ariza 20 Jän. 2019 im 07:42

3 Antworten

Beste Antwort

Sie können eine Funktion schreiben, um dies auf beliebige Weise zu handhaben. Warum nicht?

function fval($f, $precision = 9) { 
    return number_format($f, $precision); 
}

Rufen Sie dann an jedem Ort, den Sie formatieren müssen, Folgendes auf:

$f = 3.485E-5;
echo fval($f);  // this will print: 0.000003485
-1
Pete Houston 20 Jän. 2019 im 05:11

Unter bestimmten Umständen bevorzuge ich die Deklarations-Float-Nummer als Zeichenfolge:

MyFloatNumber = "0.0000000000000000000000003485";

So,

Echo MyFlatNumber; //0.0000000000000000000000003485

0
Eko Setiawan 20 Jän. 2019 im 06:00

Ich weiß, dass ich printf("%.10f",$float) Code verwenden kann, aber ich muss ihn an vielen Stellen in meiner Zeichenfolge verwenden. Daher kann ich printf nicht verwenden.

Dem muss ich respektvoll widersprechen:

printf('My float number is: %1$.8f (again: %1$.8f; once more: %1$.8f)', 0.00003485);

Oder wenn Sie es in einer Zeichenfolge benötigen:

$foo = sprintf('My float number is: %1$.8f (again: %1$.8f; once more: %1$.8f)', 0.00003485);

Wenn Sie meinen, dass dies gegen Projektstilrichtlinien oder Unternehmensrichtlinien verstößt, ist das natürlich eine andere Geschichte.

Welchen Code sollte ich für eine Zeichenfolge verwenden, um Floats so anzuzeigen, wie sie sind?

"Ja wirklich?" Floats in PHP sind eine 64-Bit-Bitmap im IEEE 754-Format mit doppelter Genauigkeit IEEE 754. Laut diesem Online-Konverter wäre die Nummer 0.00003485:

0010010001010111110011100001110100101110111001001111

Natürlich sind sie keine tatsächlichen Einsen und Nullen, sondern unterschiedliche Spannungspegel ;-)

0
Álvaro González 20 Jän. 2019 im 11:06