相关疑难解决方法(0)

如何在PHP中舍入/ ceil/floor一个bcmath数字?

是否有任何库函数用于此目的,所以我不手动完成并冒险以TDWTF结束?

echo ceil(31497230840470473074370324734723042.6);

// Expected result
31497230840470473074370324734723043

// Prints
<garbage>
Run Code Online (Sandbox Code Playgroud)

php largenumber bcmath

10
推荐指数
2
解决办法
4410
查看次数

(PHP)如何避免科学记数法并显示实际的大数字?

我一直在使用预期结果将成为的PHP代码:

1
101
10001
1000001
100000001
10000000001
1000000000001
100000000000001
10000000000000001
1000000000000000001


最后输出是:

1
101
10001
1000001
100000001
10000000001
1000000000001 //(10亿)(1000亿 - 1)仍显示实际数字,然后是
1.0E + 14
1.0E + 16
1.0E + 18


我在那里找到了一些解决方案!他们通过使用sprintf或尝试format_number说.我试过了两个.

使用sprintf和结果:

$format_x = sprintf("%.0f ",$x);
echo $format_x.$br;
Run Code Online (Sandbox Code Playgroud)

1
101
10001
1000001
100000001
10000000001
1000000000001
100000000000001
10000000000000000
1000000000000000000


使用format_number和结果:

echo number_format($x, 0).$br;
Run Code Online (Sandbox Code Playgroud)

1
101
10,001
1,000,001
100,000,001
10,000,000,001
1,000,000,000,001
100,000,000,000,001
10,000,000,000,000,000
1,000,000,000,000,000,000,000


但它仍然没有显示实际的大数字.好吧,这两种方式看起来不错,但它不符合我的要求.有人能解决这个问题吗?

php floating-point scientific-notation

8
推荐指数
1
解决办法
6383
查看次数

Base10到base64 url​​缩短

我正在编写一个url缩短函数,用于我正在学习php的项目,这里是代码(顺便说一下,我认为这global不是一件好事:P):

$alphabet = array(1 => "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
                "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
                "0","1","2","3","4","5","6","7","8","9","_","-");

function shorten($id){
    global $alphabet;
    $shortenedId = "";
    while($id>0){
        $remainder = $id % 64;
        $id = $id / 64;     
        $shortenedId = $alphabet[$remainder].$shortenedId;
    }
    return $shortenedId;
}
Run Code Online (Sandbox Code Playgroud)

该代码取自这篇维基百科文章 并适用于php.我的问题是,当我通过64到功能我得到一个错误的(我的目的)结果的倍数,例如128回报B的是不正确的,它应该是AAA,但时间太长了3位数.

当然我也会开始觉得有些不对劲这段代码,如果我通过1'000'000'000'000因为$id我得到nItOq ...我觉得这是不对的,因为像bit.ly的URL缩短服务返回6如果我使用它的数字ID,我不认为这个算法比他们更好.

那么,有两个问题:

  • 你发现上面代码中的任何错误?
  • 如何管理64位多重ID?我是否必须忽略它们并转到下一个?

php url-shortener

5
推荐指数
2
解决办法
9097
查看次数

bcmath 似乎对我的计算给出了错误的答案

我不确定我做错了什么,但是这个计算

bcscale(20);
echo bcmul(bcdiv('422218', '2388865'), '473');
Run Code Online (Sandbox Code Playgroud)

回应“83.59999999999999999670”但其他所有计算器都给我83.6。

有没有办法解决这个问题,还是 bcmath 中的一个缺陷?

php bcmath

1
推荐指数
1
解决办法
1166
查看次数