价格显示超过 2 位小数?
price showing with more then 2 decimals?
我的查询结果是一个 6 位十进制数(例如 3500,000000 而不是 3500,00)。
对于有 2 位小数的数字(例如 35,95 欧元),它必须显示最后 2 位小数,否则没有小数点(例如 60 欧元)
我尝试了另一个代码但没有成功(参见代码 2)
这是我使用的代码 1,它显示了 6 位小数的结果,例如。 35,000000 欧元
<?php
$query = 'SELECT `jr_prijs` FROM `zmuvr_jreviews_content` WHERE contentid = '.$item->getId();
$db->setQuery( $query );
$result = $db->loadResult();
print_r($result);
这是代码 2:
<?php function format_price($value) { return preg_replace( '/[.,]0{2,}/', '', strval($value) ); } ?>
<?php
$query = 'SELECT `jr_prijs` FROM `zmuvr_jreviews_content` WHERE contentid = '.$item->getId();
$db->setQuery( $query );
$result = $db->loadResult();
print_r (format_price $result);
?>
有什么建议吗?
上查看
$a = 3.54353543;
echo round($a,2); //this will print 3.54
如果您的号码是字符串,请先使用 floatVal
将字符串解析为数字
number_format($number,2);
如果您总是想要两位小数,则将值转换为decimal(x, 2)
:
select cast(jr.prijs as decimal(10, 2)) . . .
如果有时需要两位小数,有时需要 none,则需要将值转换为字符串:
select format(jr.prijs,
(case when jr.prijs - floor(jr.prijs) not between 0.005 and 0.995
then 0 else 2
end)
)
Gordon 的回答可以稍微修改一下。用他的select
select cast(jr.prijs as decimal(10, 2)) . . .
但也要处理结果:
if ($result == round($result)) {
$result = round($result);
}
mysql> SELECT b, IF( ROUND(b,0) = ROUND(b,2),
ROUND(b,0), ROUND(b,2) ) AS x
FROM deci;
+-------+-------+
| b | x |
+-------+-------+
| 2.35 | 2.35 |
| 7.65 | 7.65 |
| 4.00 | 4 | -- Note how whole number comes out without trailing '.00'
| 0.30 | 0.30 |
| 0.44 | 0.44 |
| 2.22 | 2.22 |
| -4.40 | -4.40 |
我的查询结果是一个 6 位十进制数(例如 3500,000000 而不是 3500,00)。 对于有 2 位小数的数字(例如 35,95 欧元),它必须显示最后 2 位小数,否则没有小数点(例如 60 欧元)
我尝试了另一个代码但没有成功(参见代码 2)
这是我使用的代码 1,它显示了 6 位小数的结果,例如。 35,000000 欧元
<?php
$query = 'SELECT `jr_prijs` FROM `zmuvr_jreviews_content` WHERE contentid = '.$item->getId();
$db->setQuery( $query );
$result = $db->loadResult();
print_r($result);
这是代码 2:
<?php function format_price($value) { return preg_replace( '/[.,]0{2,}/', '', strval($value) ); } ?>
<?php
$query = 'SELECT `jr_prijs` FROM `zmuvr_jreviews_content` WHERE contentid = '.$item->getId();
$db->setQuery( $query );
$result = $db->loadResult();
print_r (format_price $result);
?>
有什么建议吗?
$a = 3.54353543;
echo round($a,2); //this will print 3.54
如果您的号码是字符串,请先使用 floatVal 将字符串解析为数字
number_format($number,2);
如果您总是想要两位小数,则将值转换为decimal(x, 2)
:
select cast(jr.prijs as decimal(10, 2)) . . .
如果有时需要两位小数,有时需要 none,则需要将值转换为字符串:
select format(jr.prijs,
(case when jr.prijs - floor(jr.prijs) not between 0.005 and 0.995
then 0 else 2
end)
)
Gordon 的回答可以稍微修改一下。用他的select
select cast(jr.prijs as decimal(10, 2)) . . .
但也要处理结果:
if ($result == round($result)) {
$result = round($result);
}
mysql> SELECT b, IF( ROUND(b,0) = ROUND(b,2),
ROUND(b,0), ROUND(b,2) ) AS x
FROM deci;
+-------+-------+
| b | x |
+-------+-------+
| 2.35 | 2.35 |
| 7.65 | 7.65 |
| 4.00 | 4 | -- Note how whole number comes out without trailing '.00'
| 0.30 | 0.30 |
| 0.44 | 0.44 |
| 2.22 | 2.22 |
| -4.40 | -4.40 |