2017-06-19 22 views
0

数値のStringを浮動小数点数に変換しようとしています。私に次のような結果を与える文字列をPHPで浮動小数点に変換することができません

write_file($log . "temp=" . $temp . ".<br/>" , "public/files/log.txt"); 
write_file($log . "temp type=" . gettype($temp) . "<br/>" , "public/files/log.txt"); 
$flyt = floatval("2.19"); 
write_file($log . "2.19 float =" . $flyt . ".<br/>" , "public/files/log.txt"); 
$flyt = floatval($temp); 
write_file($log . "temp float =" . $flyt . ".<br/>" , "public/files/log.txt"); 

: は、私は次のことを試してみました

temp float =0. 
2.19 float =2.19. 
temp type=string 
temp=2.19. 

$ TEMPが "2.19" は、なぜ私はそれが浮かぶように得ることができないのですか?を 私はいくつかの方法を試しましたが、何の仕事もありませんでした。私は間違って何をしていますか? FLOATVALについては

$flyt = (float) "2.19"; 

::これはそれを行うべき String Convertions

:このドキュメントを通じて

+0

期待される結果は何ですか? – mkaatman

+0

アウトプリントで分かるように、$ tempは "2.19"の文字列です。私は浮動小数点にキャストすることができるはずです –

+1

あなたの質問は不明です私は文字列 "2.19"を浮動小数点に変換することに問題はありません 'var_dump((float)" 2.19 "); var_dump(floatval( "2.19")); ' – Robert

答えて

1

ゴー

$string = '2.19'; 
$flyt = floatval($string); 
echo $flyt; 

FloatVal Examplesを見てください。

0

タイプキャスティングを使用できます。

$StringVal = "10.12"; // $StringVal is String 
$FloatVal = (float) $StringVal; // $FloatVal is Float 

この関数を使用して、文字列変数をfloatに変換できます。使用しているときhttp://php.net/manual/en/function.floatval.php

PTR:

function tofloat($num) { 
    $dotPos = strrpos($num, '.'); 
    $commaPos = strrpos($num, ','); 
    $sep = (($dotPos > $commaPos) && $dotPos) ? $dotPos : 
     ((($commaPos > $dotPos) && $commaPos) ? $commaPos : false); 

    if (!$sep) { 
     return floatval(preg_replace("/[^0-9]/", "", $num)); 
    } 

    return floatval(
     preg_replace("/[^0-9]/", "", substr($num, 0, $sep)) . '.' . 
     preg_replace("/[^0-9]/", "", substr($num, $sep+1, strlen($num))) 
    ); 
} 

参考:

この関数は、桁区切り、通貨やその他の文字を無視して、きれいなフロートを作るために、最後のカンマやドットを(もしあれば)かかりFLOATVAL()documentationから

文字列に '。'、 'e'、または 'E'の文字が含まれていない場合、数値が整数型の制限(PHP_INT_MAXで定義)に適合する場合、文字列は整数として評価されます。それ以外の場合はフロートとして評価されます。

関連する問題