我有一个以科学计数法存储的数字
2.01421700079E+14
我尝试过使用 float、string、int,但无法得到
0201421700079085 来自 2.01421700079E+14
1. echo (float)$awb;
2. echo number_format($awb, 0, '', '');
3. echo (int)$awb;
4. echo (string)$awb;
printf
朋友们会这样做:
<?php
$awb = 2.01421700079E+14;
$str = sprintf("%d", $awb);
var_dump($str);
输出:
string(15) "201421700079000"
您的原始数字中显然没有足够的信息来获得比这更高的精度。
试试这个:
number_format(1.2378147769392E+14,0,'','')
我在 Stack Overflow 上尝试了几个对此问题评价很高的答案,但当数字大到足以失去精度时,它们都不能很好地工作。
我需要将大于20位的int数字转换为字符串类型,并且该数字来自于某些json中通过json_decode解析的数组,并且我不希望它是科学记数法,因为我想将其存储在mysql的bigint 无符号字段类型!
我找到了解决这个问题的方法。 在我的示例中,添加 JSON_BIGINT_AS_STRING 会将数字转换为字符串,以便我以字符串格式获取它。
$Data = json_decode($Data, true, 512,JSON_BIGINT_AS_STRING)
如果您仍然想用这些 bigINT 数字进行数学运算并获取仍为字符串格式的数据,您可以使用 php 的 GMP 或 BCMath 扩展来进行数学运算。
请注意,我的答案仅适用于解决大于 19 位的 Int 类型字符串