2014-10-02 107 views
0

我使用CSV文件和Excel格式往往價格如下工作:解析帶點一個數字作爲千個分隔符和逗號作爲小數點分隔

$ 384.642,54 

凡小數54.我要圓這個號碼384.643(總是舍入)。

我做的第一件事:刪除空格和excel放在單元格中的$符號。 我現在擁有的是這個號碼384.642,54。我需要PHP知道小數點是昏迷點,點是千位分隔符,然後圍繞它。

我還沒有能夠實現這與number_format。它返回我384

回答

1

你去那裏:

$number = str_replace('.', '', $number); 
$number = str_replace(',', '.', $number); 
$number = ceil($number); 
1

正如我在評論說,最不侵入性的方式是str_replace()函數中不需要的部分。然後使用ceil()四捨五入。

$num = '$ 384.642,54'; 
//- replace not wanted characters with '' 
    $num = str_replace(array('$',' ','.'), ''); 

//- convert the comma to decimal point, and transform it to a float 
    $num = floatval(str_replace(',','.')); 

echo ceil($num); 

(可選)您可以使用preg_replace()來'智能'替換東西,但對於此設置它不具有成本效益。

1

最簡單和最不涉及的解決方案:使用str_replace來替換帶空串的點;然後再次使用它以點替換逗號;然後用floatval將字符串轉換爲數字,然後你想圓任何方式:

$result = round(floatval(str_replace(',', '.', str_replace('.', '', '384.642,54')))); 
0
$num = '$ 384.642,54'; 
echo number_format(
    ceil(
    str_replace(
    array('.', '$', ' ', ','), 
    array('', '', '', '.'), 
    $num 
    ) 
), 0, '', '.' 
); 
相關問題