Buenas.

En la reunión de ayer, cuando Ramiro nos presentó su módulo, yo indiqué que no me parecía correcto que el cálculo se hiciese en base a dividir los bytes de la capacidad devuelta por el sistema operativo en múltiplos de 1024. Y que en su lugar se debía usar el valor de 1000.

Este es un extracto de lo que figura en la página "Unidad de disco duro" de la Wikipedia:

   Además, los fabricantes de discos duros, unidades de estado sólido y
   tarjetas flash miden la capacidad de los mismos usando prefijos del
   Sistema Internacional, que _emplean múltiplos de potencias de 1000
   según la normativa IEC e IEEE_, en lugar de los prefijos binarios,
   que emplean múltiplos de potencias de 1024, y son los usados por
   sistemas operativos de Microsoft. Esto provoca que en algunos
   sistemas operativos sea representado como múltiplos 1024 o como
   1000, y por tanto existan confusiones, por ejemplo un disco duro de
   500 GB, en algunos sistemas operativos será representado como 465
   GiB (es decir gibibytes; 1 GiB = 1024 MiB) y en otros como 500 GB.

De esta manera, los dispositivos de almacenamiento se igualan con las velocidades de transmisión o caudales, de las líneas de datos, basándose todas en múltiplos de 1000 (bueno, en la mayoría de los casos).

Además... así el algoritmo de cálculo de las letras de los prefijos queda... de otra manera :)

my $x = 7233434453; # valor de prueba
my $n = int log($x) / log(10) / 3;

return sprintf "%6.02f %2s", $x/10**($n*3), (qw(B KB MB GB TB PB EB ZB YB))[$n];   # 
"  7.23 GB"

La división log $x / log 10 se debe a que en Perl 5 no existe la función logaritmo en base 10, que sí tiene Perl 6: .log10


--
JF^D

_______________________________________________
Madrid-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/madrid-pm

Responder a