PHP 5.6.0beta1 released

is_float

(PHP 4, PHP 5)

is_floatPrüft, ob eine Variable vom Typ float ist

Beschreibung

bool is_float ( mixed $var )

Prüft, ob eine Variable vom Typ float ist

Hinweis:

Um zu testen, ob eine Variable eine Zahl oder eine numerische Zeichenkette ist (wie zum Beispiel Formularangaben, die immer Zeichenketten sind), müssen Sie is_numeric() verwenden.

Parameter-Liste

var

Die auszuwertende Variable.

Rückgabewerte

Gibt TRUE zurück, wenn var vom Typ float ist, sonst FALSE.

Beispiele

Beispiel #1 is_float()-Beispiel

<?php
if(is_float(27.25)) {
    echo 
"is float\n";
}else {
    echo 
"is not float\n";
}
var_dump(is_float('abc'));
var_dump(is_float(23));
var_dump(is_float(23.5));
var_dump(is_float(1e7));  //Scientific Notation
var_dump(is_float(true));
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

is float
bool(false)
bool(false)
bool(true)
bool(true)
bool(false)

Siehe auch

  • is_bool() - Prüft, ob eine Variable vom Typ boolean ist
  • is_int() - Prüft, ob eine Variable vom Typ int ist
  • is_numeric() - Prüft, ob eine Variable eine Zahl oder ein numerischer String ist
  • is_string() - Prüft, ob Variable vom Typ string ist
  • is_array() - Prüft, ob die Variable ein Array ist
  • is_object() - Prüft, ob eine Variable vom Typ object ist

add a note add a note

User Contributed Notes 6 notes

up
4
kshegunov at gmail dot com
6 years ago
As celelibi at gmail dot com stated, is_float checks ONLY the type of the variable not the data it holds!

If you want to check if string represent a floating point value use the following regular expression and not is_float(),
or poorly written custom functions.

/^[+-]?(([0-9]+)|([0-9]*\.[0-9]+|[0-9]+\.[0-9]*)|
(([0-9]+|([0-9]*\.[0-9]+|[0-9]+\.[0-9]*))[eE][+-]?[0-9]+))$/
up
4
Boylett
5 years ago
If you want to test whether a string is containing a float, rather than if a variable is a float, you can use this simple little function:

function isfloat($f) return ($f == (string)(float)$f);
up
2
Mitch
1 year ago
Another RegEx for matching floats:
/^[+-]?(\d*\.\d+([eE]?[+-]?\d+)?|\d+[eE][+-]?\d+)$/

Matches:
1e2
+1353.0316547
13213.032468e-13465
-8E+3
-1354.98879e+37436

Non-matches:
8
e2
-e-4
E
asdf.safd
8e

Enjoy.
up
1
phper
8 years ago
A better way to check for a certain number of decimal places is to use :

$num_dec_places = 2;
number_format($value,$num_dec_places);
up
-1
KIVagant at gmail dot com
1 year ago
Yet another regular expression for float in real life:

<?php
function isTrueFloat($val)
{
   
$pattern = '/^[-+]?(((\\\\d+)\\\\.?(\\\\d+)?)|\\\\.\\\\d+)([eE]?[+-]?\\\\d+)?$/';

    return (!
is_bool($val) && (is_float($val) || preg_match($pattern, trim($val))));
}
?>

// Matches:
1, -1, 1.0, -1.0, '1', '-1', '1.0', '-1.0', '2.1', '0', 0, ' 0 ', ' 0.1 ', ' -0.0 ', -0.0, 3., '-3.', '.27', .27, '-0', '+4', '1e2', '+1353.0316547', '13213.032468e-13465', '-8E+3', '-1354.98879e+37436'

// Non-matches:
false, true, '', '-', '.a', '-1.a', '.a', '.', '-.', '1+', '1.3+', 'a1', 'e.e', '-e-4', 'e2', '8e', '3,25'
up
-2
ckelley at the ca - cycleworks dot com
5 years ago
Personally, I use an implicit cast:

if( is_float($value+1) ){
    $value=sprintf("%.2f",$value);
}

Which turns 22.0000000 query result into 22.00 for display to users.
To Top