Php 回显十进制值,末尾不带零点(.0)
我正在使用 十进制(5,1) 来存储我的数据。 当值为Php 回显十进制值,末尾不带零点(.0),php,mysql,sql,Php,Mysql,Sql,我正在使用 十进制(5,1) 来存储我的数据。 当值为12.2、66.4时。。。一切都好。 但不是十进制值:5,10,20。。。。当回波为5.0、10.0时 我该如何回应它们的样子: 1, 2.2, 2.5, 10, 10.5, 10.6, 11 您需要查看该值并决定如何格式化它。类型规范说“在小数点后保留一位数字”,MySQL努力做到这一点 有很多方法。这里有一个: select (case when val = cast(val as int) then format(val, 0)
12.2、66.4时
。。。一切都好。
但不是十进制值:5,10,20
。。。。当回波为5.0、10.0时
我该如何回应它们的样子:
1, 2.2, 2.5, 10, 10.5, 10.6, 11
您需要查看该值并决定如何格式化它。类型规范说“在小数点后保留一位数字”,MySQL努力做到这一点 有很多方法。这里有一个:
select (case when val = cast(val as int) then format(val, 0)
else format(val, 10) end)
格式增加了逗号,这(对我来说)对于大于1000的数字似乎是可取的。但是,如果您不喜欢,还有其他方法。戈登·林诺夫的回答可能会起作用,但下面是PHP的方法:
echo (intval($var) == $var) ? intval($var) : $var;
或者,如果您不喜欢三元条件:
if (intval($var) == $var) {
echo intval($var);
} else {
echo $var;
}
适用于任意小数位数的通用解决方案: 删除所有尾随零,如果最后一个字符是句点,也删除它:
TRIM(TRAILING '.' FROM (TRIM(TRAILING '0' FROM (CAST(col AS VARCHAR(40))))))
谢谢我将此解决方案用于我的页面。看起来一切都很好。我很高兴这很有帮助。如果您认为此解决方案解决了问题,请单击绿色勾号,以便其他用户也可以看到。我尝试在SQL查询中强制转换,但不知道如何处理它。我认为我的CSM在这个方法上有一些问题。