11

我正在尝试对包含 1400000 的变量进行回显。所以写着:echo round(1400000); 这给出了 1,4E+6 而不是完整的数字。有人知道如何充分展示它吗?

4

3 回答 3

10

It seems that round was the problem. I changed it with number_format() and this does the job just fine. Thanks Aron and Paul for the answers.

于 2009-01-29T10:58:44.620 回答
7

与您的问题相关,我也在PHP 网站上看到了此评论。

对于某些“特殊”浮点数,PHP 从标准十进制表示法切换到指数表示法。您可以通过以下方式查看此类“特殊”值的部分列表:

for( $tmp = 0, $i = 0; $i < 100; $i++ ) 
{
    $tmp += 100000;
    echo round($tmp),"\n"; 
} 

因此,如果您添加两个浮点数,最终得到一个“特殊”值,例如 1.2E+6,然后将该值未经修改地放入更新查询中以将值存储在十进制列中,例如,您可能会得到一个失败的事务,因为数据库会将“1.2E+6”视为 varchar 数据,而不是十进制。同样,如果将值放入 xml,您可能会收到 XSD 验证错误。

老实说:这是我在 20 多年的编码中看到的任何语言中最奇怪的事情之一,解决它是一个巨大的痛苦。

似乎还没有“真正的”修复,但从Paul Dixon之前提到的错误报告中的评论来看,他的解决方案似乎有效。

于 2009-01-29T10:52:41.747 回答
3

可能与此错误报告有关,因此您可以尝试

printf("%d", $myvar);
于 2009-01-29T10:44:26.960 回答