我正在使用CSV文件和Excel经常格式化这样的价格:
$ 384.642,54
Decimal为54.我需要将此数字舍入384.643
(总是向上舍入)。
我首先做的是:删除空格和excel放入单元格的$符号。
我现在拥有的是这个号码384.642,54
。我需要PHP才能知道十进制是Coma,而dot是千位分隔符,然后围绕它。
我无法通过number_format实现此目的。它会返回384
答案 0 :(得分:1)
你去了:
$number = str_replace('.', '', $number);
$number = str_replace(',', '.', $number);
$number = ceil($number);
答案 1 :(得分: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()来实现智能'替换东西,但对于这种设置,它不符合成本效益。
答案 2 :(得分:1)
最简单且涉及最少的解决方案:使用str_replace
用空字符串替换点;然后再次使用它用点替换逗号;然后使用floatval
将字符串转换为数字,然后以任意方式将其舍入:
$result = round(floatval(str_replace(',', '.', str_replace('.', '', '384.642,54'))));
答案 3 :(得分:0)
$num = '$ 384.642,54';
echo number_format(
ceil(
str_replace(
array('.', '$', ' ', ','),
array('', '', '', '.'),
$num
)
), 0, '', '.'
);