结束时没有点零(.0)的回声十进制值

时间:2015-06-13 13:07:52

标签: php mysql sql

我正在使用

  

十进制(5,1)

存储我的数据。 当值为12.2, 66.4时......一切正常。 但是非十进制值:5, 10 , 20 ....当echo将是5.0, 10.0 ...

我如何回应它们:

1, 2.2, 2.5, 10, 10.5, 10.6, 11

3 个答案:

答案 0 :(得分:1)

您需要查看该值并决定如何格式化它。类型规范说“在小数点后保留一位数字”,而MySQL则努力做到这一点。

有很多方法。这是一个:

select (case when val = cast(val as int) then format(val, 0)
        else format(val, 10) end)

格式添加逗号,对于大于1,000的数字,这对我来说似乎是理想的。但如果您不喜欢,还有其他方法。

答案 1 :(得分:1)

Gordon Linoff的答案可能会解决问题,但这是PHP的方法:

if (intval($var) == $var) {
    echo intval($var);
} else {
    echo $var;
}

或者,如果您不喜欢三元条件:

java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]

答案 2 :(得分:0)

适用于任意数量小数位数的通用解决方案: 删除所有尾随零,如果最后一个字符是句点,也将其删除:

TRIM(TRAILING '.' FROM (TRIM(TRAILING '0' FROM (CAST(col AS VARCHAR(40))))))