我使用了这个函数,但它不能很好地处理大小数字
function convert($number)
{
return (string)sprintf("%.40f", floatval($number));
}
//example 1
// convert(10);
//"10.0000000000000000000000000000000000000000" correct
//
//example 2
// convert(1.0464844434049273e-9)
// "0.0000000010464844434049272962108666736101" incorrect
// "0.0000000010464844434049273" correct
//
//example 3
// convert(0.0000010464844434049273)
// "0.0000010464844434049273375698973012615234" incorrect
// "0.0000010464844434049001" correct
我在这里核对了这些号码
在php或laravel中,有什么好的软件包可以处理这些类型的数字吗?
一些有帮助的响应。
第一:
请注意,PHP在内部使用有符号整数。大小取决于您的系统。
32位系统:
2^(32-1(=214748364864位系统:
2^(64-1(=9223372036854775808-1,因为为标牌标志保留了1位。
第二:
要处理大数字并将其用作字符串,请尝试使用BCMath函数。