为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
皈依舞 2023-05-12 15:26:05
将字符串解析为长字符串时遇到问题。我希望将变量“695690829980893234”解析为 long 而没有任何损失。我环顾四周,但似乎没有任何帮助。使用时(double) $var显示为 4.2904753172133E+17(这不是我需要的方式)有人有什么想法吗?非常感激!
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

在标准 PHP 中, long类型是不存在的。


所以,如果你想要一个长整数,你可以使用标准的int类型,或者使用扩展,比如BC或GMP。


具体来说,值695690829980893234在64位PHP的整数范围内,但在32位PHP的整数范围之外。


转换为int:

首先,请确保数字在int范围内。然后只需转换


$res = intval("695690829980893234");

if($res<PHP_INT_MAX){

    // 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);

希望这个答案有所帮助。


查看完整回答
反对 回复 2023-05-12
?
12345678_0001

TA贡献1802条经验 获得超5个赞

确保您运行的是 64 位版本的 PHP。


echo PHP_INT_SIZE;

8

然后它会很容易地将字符串转换为 int


$a =  "695690829980893234";

$b =  (int)$a;

var_dump($a, $b);

string(18) "695690829980893234"

int(695690829980893234)


查看完整回答
反对 回复 2023-05-12
  • 2 回答
  • 0 关注
  • 168 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号