为什么我的数字格式变得科学?

时间:2018-01-14 13:17:04

标签: php arrays

我有一个数字列表然后我想在每个数字上使用逗号工作正常,但问题如果数字超过14我的输出成为科学格式

喜欢这个1,.,1,1,1,1,1,1,1,1,1,E,+,2,8

但我希望像1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,

这里的示例代码

<?php 
$val = 11111111110000000000000000111;

$val = (string)$val; // convert into a string
$arr = str_split($val, "1"); // break string in 3 character sets

$val_new = implode(",", $arr);  // implode array with comma

echo $val_new;


?>

由于

2 个答案:

答案 0 :(得分:2)

这是因为它超过max value of an integer。你无能为力。 超过此限制的输入将始终转换为浮点表示。这意味着输入应立即格式化为字符串:

$val = "11111111110000000000000000111";

$arr = str_split($val, 1); // break string in 3 character sets
$val_new = implode(",", $arr);  // implode array with comma

echo $val_new;

答案 1 :(得分:1)

这是因为数字太大,所以php会自动将其转换为科学格式。你可以通过最初将数字定义为字符串来避免这种情况(通过将其放在引号内)...尝试将代码更改为:

$val = "11111111110000000000000000111";

并删除此行:

$val = (string)$val; // convert into a string

让我知道它是怎么回事。