Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 回显十进制值,末尾不带零点(.0)_Php_Mysql_Sql - Fatal编程技术网

Php 回显十进制值,末尾不带零点(.0)

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)

我正在使用

十进制(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)
        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在这个方法上有一些问题。