Kaskus

Tech

margono.sudibyoAvatar border
TS
margono.sudibyo
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));


nona212Avatar border
nona212 memberi reputasi
1
655
1
GuestAvatar border
Komentar yang asik ya
Urutan
Terbaru
Terlama
GuestAvatar border
Komentar yang asik ya
Komunitas Pilihan