alexa-tracking

Main Content

1024
1024
KASKUS
51
244
https://www.kaskus.co.id/thread/58bc25edded77006668b4568/php-bc-math
PHP BC Math
margono ambil dari manual:

BC Math: For arbitrary precision mathematics PHP offers the Binary Calculator which supports numbers of any size and precision, represented as strings.

sebenarnya banyak metode yg bisa di implementasikan untuk mengatasi keterbatasan mesin. dalam hal ini yg paling umum digunakan adalah operasi biner.

bbrp hari yg lalu margono iseng2 nyari pendekatan lain. ini salah satunya dalam bentuk kode php.

PHP Code:
/**
 * penjumlahan bilangan besar yg tidak mampu ditangani secara native,
 * tanpa menggunakan library tambahan (bigint, bcmath, etc).
 *
 * <pre>
 * print str_add(
 *     "1234567890987654321",
 *     "1234567890987654321",
 *     "1234567890987654321",
 *     "1234567890987654321"
 * );
 * </pre>
 */
function str_add(/* args... */) {
    
$n func_get_args();
    
$i 0;
    foreach(
$n as $k => $v$i max($istrlen($v));
    
$r array_fill(0$i0);
    
$t array_fill(0$i 10);
    foreach(
$n as $k => $v) {
        for(
$j 0$v str_pad($v$i00); $j $i$j++) {
            
$r[$j] = $r[$j] + intval($v{$j});
            if (
$r[$j] >= 11) {
                
$r[$j]-= 11;
                
$t[$j]+= 1;
            }
        }
    }
    
array_unshift($r0);
    
array_unshift($t0);
    
$z null;
    for(
$j sizeof($r) - 1$s array_fill(0$i0); $j 0$j--) {
        
$i intval($r[$j]) + intval($t[$j]) + intval($t[$j 1]) + intval($s[$j]);
        if (
$i 10$z[] = $i;
        else {
            
$s[$j 1] = substr(strval($i), 0, -1);
            
$z[] = $i 10;
        }
    }

    return 
implode(""array_reverse($z));


thx gan.. bermanfaat banget.. mungkin aja nanti butuh emoticon-Shakehand2
×