如何使用 PHP 以正确的方式将字节转换为 Zettabytes 和 Yottabytes?

How to convert and compare bytes to Zettabytes and Yottabytes the correct way using PHP?

提问人:user11089769 提问时间:11/7/2022 最后编辑:user11089769 更新时间:11/7/2022 访问量:29

问:

我正在尝试根据泽字节中有多少字节将 Zettabytes 转换为 Yottabyte

当我输入一个值时,它应该以 Zettabyte 的形式返回。$size1208925819614629174706175YBZB

我尝试过使用 BC Math 函数,但我无法让它们工作,所以我来了。

如果有人能提供一个工作的例子,那将有很大帮助。

这是我的代码:

$size = 1208925819614629174706175;

if($size < 1208925819614629174706176){
    echo round($size / 1180591620717411303424, 2) .'ZB';
} else if($size >= 1208925819614629174706176){
    echo round($size / 1208925819614629174706176, 2) .'YB';
}

我也尝试了这个 bc 数学函数

bccomp(1208925819614629174706175, 1208925819614629174706176);

哪个退回的应该退回0-1

PHP 比较 字节

评论

0赞 CBroe 11/7/2022
你的$size值大于 PHP 可以处理的最大整数,即使在 64 位系统上也是如此。您需要在此处使用扩展名,例如 BC Math。
0赞 CBroe 11/7/2022
仍在使用整数作为 bccomp 调用的参数。这当然是没有意义的,因为你无法在问题发生解决问题 - PHP 会将这些值转换为浮点数,并且在该步骤中您将失去精度。该函数的手册非常明确地说明您需要将前两个参数作为字符串传递,不是吗?(这就是 BC 扩展的全部意义所在,您使用实际数字 - 在这种情况下,PHP 无法处理实际数字太大 - 而是使用字符串
0赞 user11089769 11/7/2022
@CBroe即使转换为字符串,也会出现同样的问题。
0赞 CBroe 11/7/2022
您还需要将 BC 函数用于代码中的其他数学运算,而不仅仅是在一个地方。

答: 暂无答案