[英]Converting a string to float in php
我正在獲取有關頁面執行時間的一些基准數據。 它由框架提供為字符串。 我想將其轉換為浮點數,乘以1000,然后將其作為整數存儲在數據庫中。 似乎真的很奇怪,我希望有人能幫助我找出原因。 這是代碼:
$elapsed = $this->benchmark->elapsed_time();
var_dump("before:");
var_dump($elapsed);
$elapsed = floatval($elapsed);
var_dump("after:");
var_dump($elapsed);
結果如下:
編輯:我想通了這一點,這要歸功於有人指出字符串長度是錯誤的。 顯然,該方法返回字符串'{elapsed_time}',框架正在緩沖輸出,然后將該字符串替換為最終評估時間。 謝謝您的幫助。
$elapsed = ((float)$this->benchmark->elapsed_time()) * 1000;
<?php
$time = '0.5643';
var_dump( $time );
//output :: string(6) "0.5643"
var_dump( $time * 1000 );
//output :: float(564.3)
?>
一切都在意料之中..但是隨后您卻做了一些非常愚蠢的事情:
<?php
$badtime = "\0\0\0\0\0\0\0\0" . $time;
var_dump( $badtime );
//output :: string(14) "0.5643"
var_dump($badtime * 1000);
//output :: int(0)
$goodtime = str_replace("\0", "", $badtime);
var_dump($goodtime * 1000);
//output :: float(564.3)
?>
不確定,但是$elapsed *= 1000;
應該沒事。
<?php var_dump((float)'0.734' * 1000); //float(734) ?>
$ this-> benchmark-> elapsed_time()可能是在浮點數之前添加了一些垃圾,這就是為什么minitech指出0.7608是14個字符。
嘗試:
$elapsed = floatval(trim($elapsed));
要么
$elapsed = floatval(preg_replace('/[^0-9\.]/', '', $elapsed));
有點奇怪,但以上內容可能會有所幫助,我不確定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.