Php 价格显示超过2位小数?

Php 价格显示超过2位小数?,php,mysql,select,decimal,joomla3.0,Php,Mysql,Select,Decimal,Joomla3.0,我的查询结果是6位小数(例如350000000而不是3500,00)。 对于有2位小数的数字(例如35,95欧元),必须显示最后2位小数,否则不显示小数(例如60欧元) 我尝试了另一个代码却没有成功(参见代码2) 这是我使用的代码1,它以6位小数显示结果,例如35000000欧元 <?php $query = 'SELECT `jr_prijs` FROM `zmuvr_jreviews_content` WHERE contentid = '.$item->getId();

我的查询结果是6位小数(例如350000000而不是3500,00)。 对于有2位小数的数字(例如35,95欧元),必须显示最后2位小数,否则不显示小数(例如60欧元)

我尝试了另一个代码却没有成功(参见代码2)

这是我使用的代码1,它以6位小数显示结果,例如35000000欧元

<?php
    $query = 'SELECT `jr_prijs` FROM `zmuvr_jreviews_content` WHERE contentid = '.$item->getId();
    $db->setQuery( $query );
    $result = $db->loadResult();
    print_r($result);

有什么建议吗?

试试看

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

如果总是需要两个小数,则将该值强制转换为十进制(x,2):

如果有时需要两个小数,有时需要一个小数,则需要将该值转换为字符串:

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

戈登的答案可以稍加修改。使用他的选择

select cast(jr.prijs as decimal(10, 2)) . . .
但也要考虑结果:

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

如果
prijs
可以为负值,我们可以使用
ABS
函数返回差值的绝对值。MySQL没有名为
trunc
…:
的内置函数,当ABS(jr.prijs-TRUNCATE(jr.prijs,0)不在
@spencer7593…Oops之间时,应该是
floor()
。最近甲骨文太多了。@GordonLinoff你能帮我把你的代码粘贴到哪里吗?ooooooo:)对不起,这是有效的,最好的方法,但thx对其他助手和oscargeek他的方法也有效,但我会显示如果实际的最后到小数,这个代码是正确的,不仅jr.prijs,但在我的情况下它必须是jr_prijs thx:))@GordonLinoff:)可能是这个价格问题的最新方法:)结果显示,例如3999.95欧元………我如何显示3999.95欧元(3后面的空格不带¨,¨或punktum,如果没有小数,则为2900欧元,-意思类似于php.netSotek上的法语符号,我使用了这个,但错误是
`不能使用
print\r(number\u格式($number,2);$result);
而使用
print\r(number\u格式($number,2));print\r($result)之类的东西);
简化了问题并更正了一些错误。
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)
              )
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 |