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
658
1
GuestAvatar border
Komentar yang asik ya
Mari bergabung, dapatkan informasi dan teman baru!
Programmer Forum
Programmer Forum
KASKUS Official
20.2KThread4.9KAnggota
Urutkan
Terlama
GuestAvatar border
Komentar yang asik ya
Ikuti KASKUS di
© 2025 KASKUS, PT Darta Media Indonesia. All rights reserved.