价格显示超过2位小数?

时间:2015-07-13 20:43:52

标签: php mysql select decimal joomla3.0

我的查询结果是一个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);
?> 

有什么建议吗?

5 个答案:

答案 0 :(得分:0)

尝试查看roundFunction

mysqli_query($con, "INSERT INTO problem_accounts (igID, reason) VALUES ('$igID', '$reason') ON DUPLICATE KEY UPDATE igID = '$igID', reason = '$reason'");

如果您的号码是字符串,请先使用floatVal 将字符串解析为数字

答案 1 :(得分:0)

使用number_format

number_format($number,2);

答案 2 :(得分:0)

如果总是想要两位小数,则将值转换为decimal(x, 2)

select cast(jr.prijs as decimal(10, 2)) . . .

如果您有时需要两个小数,而其他小数则没有,那么您需要将该值转换为字符串:

select format(jr.prijs,
              (case when jr.prijs - floor(jr.prijs) not between 0.005 and 0.995
                    then 0 else 2
               end)
              )

答案 3 :(得分:0)

戈登的回答可以稍微修改一下。使用他的选择

select cast(jr.prijs as decimal(10, 2)) . . .

但也要处理结果:

if ($result == round($result)) {
   $result = round($result);
}

答案 4 :(得分:0)

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 |