如何阻止/阻止PHP自动格式化科学符号中的数字

时间:2017-10-05 19:30:53

标签: php

我想用php显示以下数字,但输出很奇怪:

echo 3333333333333333333333333333333;  // -----------> 3.3333333333333E+30
echo 0.000025;                         // -----------> 2.5E-5

我没有要求它转换。为什么这样做?我应该如何强制它完全按照我的要求获取/设置值? (p.s.我听说过sprint_fnumber_format函数,但我不喜欢它们,因为我必须提前知道格式和长度。)

更重要的是,当我尝试在数据库中保存大数字时,会保存一个数字:2147483647(我发现这是最大整数值)。我将列类型从int更改为varchar(100),但仍会发生相同的截断。

3 个答案:

答案 0 :(得分:2)

查看php.ini中的精度设置

http://php.net/manual/en/ini.core.php

说明PHP将如何输出数字的设置

答案 1 :(得分:1)

当你使用这样的极端数字(包括负数或正数)时,php中数字系统的准确性就会发挥作用。

对于这样的数字,浮点数不准确,我建议使用此处列出的其中一个

http://php.net/manual/en/refs.math.php bc是为小数而设计的

答案 2 :(得分:1)

好吧,我会回答我自己的话题。

1)第一个问题是PHP截断了LARGE和最小值...但是,我解决了将字符串转换为字符串(使用双引号)。

2)第二个问题有点奇怪...... 当我第一次创建MySQL时,我将该列设为INT(11),然后将列更改为Varchar(100)(正如我所有其他列都Varchar(100)一样,他们可以很好地保存该值)。

但是,该列再次截断了值。然后我重新创建了表,但更改了COLUMN名称,然后IT工作得好!我认为,MySQL缓存了列类型(或者肯定会发生类似的事情)!