测试是在64位系统上进行的!
php7有一个不错的功能:intdiv()
。以下代码可以完美运行:
$number = 0x7fffffffffffffff;
$result = intdiv($number,62);
结果是148764065110560900
(其余7),如预期。
但是如何在php <7(例如php5.3)中进行这种划分?
$number = 0x7fffffffffffffff;
$result = intval($number/62);
在这里,结果为148764065110560896
,小于intdiv(...)
的结果。原因很明显:$number/62
是浮点运算。因此$number
会转换为浮点数并失去精度(52位而不是64位)。因此结果四舍五入。
验证代码:
php -r '$a=0x7fffffffffffffff; $b=intdiv($a,62); $c=intval($a/62); printf("%d - %d = %d\n",$b,$c,$b-$c);'
// result: 148764065110560900 - 148764065110560896 = 4
我的问题:
有谁知道一个函数,该函数返回正确的整数值,例如0x7fffffffffffffff/62
不用intdiv()
吗?
if (!function_exists('intdiv'))
{
function intdiv($a,$b)
{
$a = intval($a);
$b = intval($b);
return ( $a - $a % $b ) / $b;
}
}
我将计划进行更多测试以验证此替换功能。
答案 0 :(得分:1)
您可以使用protected void onActivityResult(int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (ImagePicker.shouldHandle(requestCode, resultCode, data)) {
UCrop.of(data.getData(),data.getData())
.start(this);
}
}
运算符来获取余数。然后,在减去其余部分后,进行除法:
%