如何在不丢失的情况下将 String 解析为 long

将字符串解析为长字符串时遇到问题。我希望将变量“695690829980893234”解析为 long 而没有任何损失。我环顾四周,但似乎没有任何帮助。

使用时(double) $var显示为 4.2904753172133E+17(这不是我需要的方式)

有人有什么想法吗?非常感激!


皈依舞
浏览 169回答 2
2回答

神不在的星期二

在标准 PHP 中, long类型是不存在的。所以,如果你想要一个长整数,你可以使用标准的int类型,或者使用扩展,比如BC或GMP。具体来说,值695690829980893234在64位PHP的整数范围内,但在32位PHP的整数范围之外。转换为int:首先,请确保数字在int范围内。然后只需转换$res = intval("695690829980893234");if($res<PHP_INT_MAX){&nbsp; &nbsp; // OK! inside the positive limitation}转换为GMP一个 GMP 对象表示一个任意长度的整数:$res = gmp_init("695690829980893234");然后,使用GMP函数对号码进行操作,如:$res = gmp_add($res, gmp_init("100"));$res = gmp_sub($res, gmp_init("200"));最后,将其转换回 int 或 string:$int = gmp_intval($res);$str = gmp_strval($res);希望这个答案有所帮助。

12345678_0001

确保您运行的是 64 位版本的 PHP。echo PHP_INT_SIZE;8然后它会很容易地将字符串转换为 int$a =&nbsp; "695690829980893234";$b =&nbsp; (int)$a;var_dump($a, $b);string(18) "695690829980893234"int(695690829980893234)
打开App,查看更多内容
随时随地看视频慕课网APP