PHP Doku:: Prüft, ob eine Variable vom Typ float ist - function.is-float.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzVariablen- und typbezogene ErweiterungenVariablenbehandlungFunktionen zur Behandlung von Variablenis_float

Ein Service von Reinhard Neidl - Webprogrammierung.

Funktionen zur Behandlung von Variablen

<<is_double

is_int>>

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


8 BenutzerBeiträge:
- Beiträge aktualisieren...
Boylett
20.09.2008 18:29
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);
ckelley at the ca - cycleworks dot com
15.07.2008 0:39
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.
kshegunov at gmail dot com
31.03.2008 23:32
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]+))$/
celelibi at gmail dot com
3.03.2008 17:31
Unlike others comment may let you think, this function tests *only* the type of the variable. It does not perform any other test.
If you want to check if a string represents a valid float value, please use is_numeric instead.
WHITE new media architects - Jeroen
10.01.2008 12:24
The above printed "is_true_float" function is not correct.
It gives wrong answers on the following tests:
is_true_float("-4,123"); # returns false
is_true_float("0,123");  # returns false

So I changed the function to correctly handle qouted negative floats and quoted floats near zero:

<?php

function is_true_float($mVal)
{
  return (
is_float($mVal)
           || ( (float)
$mVal != round($mVal)
                ||
strlen($mVal) != strlen( (int) $mVal) )
              &&
$mVal != 0 );
}

?>
Kenaniah Cerny
6.11.2007 20:21
For those of you who have discovered that is_float() does not behave exactly the way you would expect it to when passing a string, here is a function that extends is_float properly report floating numbers given any sort of mixed variable.

<?php
function is_true_float($val){
    if(
is_float($val) || ( (float) $val > (int) $val || strlen($val) != strlen( (int) $val) ) && (int) $val != ) return true;
    else return
false;
}
?>

<?php
//Tests
'4.0'       returns true
'2.1'       returns true
0           returns false
"0"         returns false
3.          returns true
13          returns false
"12"        returns false
3.53        returns true
?>

Enjoy
phper
25.01.2006 21:08
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);
kirti dot contact at gmail dot com
19.10.2005 8:18
To check a float only should contain certain number of decimal places, I have used this simple function below

<?
function is_deccount($number,$decimal=2){
   
$m_factor=pow(10,$decimal);
    if((int)(
$number*$m_factor)==$number*$m_factor)
        return
true;
    else
        return
false;
 }   
?>



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)