SQL或PHP中的自动十进制数字格式?

时间:2009-09-06 19:53:13

标签: php sql mysql

在我的数据库中,大多数数值都是DECIMAL(10,6)类型。它们是货币列。

现在,当我从mysql中检索数字时,我得到类似这样的内容

34.123456 //我想要这些 0.987654
500.000000 //我不想要这些 1.000000

是否有可能让数字自动显示为整数,并且在点之后将小数维持在我想要的精度,这样我就可以得到。

34.123456
0.987654
500个
1个

3 个答案:

答案 0 :(得分:2)

如果您只想修改显示的数字,则可以将printf%g格式化程序一起使用,并指定最大精确位数:

printf ("%.10g", 123.456); // outputs "123.456"
printf ("%.10g", 123.456000000); // outputs "123.456"
printf ("%.10g", 123.000000000); // outputs "123"
printf ("%.10g", 1.234567891); // outputs "1.234567891"

答案 1 :(得分:0)

在PHP中,您可以在输出之前进行简单的整数比较:

echo ((int) $var == $var) ? (int) $var : $var;

作为一个快速/肮脏的例子,这段代码:

$var = '500.01';
echo ((int) $var == $var) ? (int) $var : $var;
echo "\n";
$var = '500.00';
echo ((int) $var == $var) ? (int) $var : $var;

产地:

500.01
500

答案 2 :(得分:0)

您可以CAST将值添加到您希望在SQL端强制执行此类精度的任何类型,例如:

SELECT 
  CASE myNumber MOD 1 
    WHEN 0 THEN CAST(myNumber AS decimal(10,0)) 
    ELSE myNumber 
  END 
FROM myTable;