我将价格存储到五位小数的精度,例如:
1.95000
2.25000
0.01150
2.10000
2.00000
当显示价格时,我想显示标准$X.XX
格式,如果其余数字只是零,但如果有有效数字,那么我不想删除它们(所以我不能简单地使用number_format()
)。
例如,上述价格应显示为:
1.95
2.25
0.0115
2.10
2.00
此过程必须以每页数百个价格完成。以这种方式格式化数字的有效方法是什么?
答案 0 :(得分:3)
这使用正则表达式匹配尾随0之前的所有内容
$i = "$1.00";
$pattern = '/\$(\d+)\.(\d\d)(0*)/';
$replacement = '\$$1.$2';
print preg_replace($pattern,$replacement,$i);
在小数点右边的前两位数之后的所有内容上使用rtrim
的另一种方式
$pos = strpos($i, '.') + 3;
print substr($i, 0, $pos) . rtrim(substr($i, $pos), '0');
答案 1 :(得分:2)
这有点难看,但它确实起作用了:
function formatPrice($price) {
$out = (float)$price; // Trim off right-hand 0's
$out = "$out"; // Typecast back to string
if ((strlen($out) - strpos($out, '.')) <= 2) { // Test for string length after decimal point
$out = number_format($out, 2); // Format back with 0's
}
return $out;
}
立即测试...... Works!
感谢@ FuzzyTree的回答,这是我的另一条评论中的单行函数:
function formatPrice($price) {
return substr($price, 0, strpos($price, '.') + 3) . rtrim(substr($price, strpos($price, '.') + 3), '0');
}