2014-11-05 81 views
-2

我有一個以字節爲單位的大小。我想每次以MB爲單位進行轉換。但是我的代碼給出了錯誤的答案。在Perl中將字節轉換爲MB

sub sizeConversion { 
    my $size = shift; 
    return ($size/(1024 * 1024)); 
} 

my $size = 1024; 
my $size_conversion = &sizeConversion($size); 
print $size_conversion; 

我得到的輸出:

0.0009765625 

但我應該得到的輸出作爲

0.001024MB 

請幫助。提前致謝。

+5

你最好拿一個計算器來驗證你的假設究竟是什麼1/1024(提示:它不是0。001024) – 2014-11-05 07:36:28

+2

1024字節 - > 1KB - > 1/1024MB。但1/1024的結果不是0.001024,因爲1024的冪2不是1000000. – 2014-11-05 07:37:48

回答

3

您應該知道IT世界中有兩種兆字節(MB)。 (A)1MB = 100萬(1,000,000)字節。

該MB被用於硬盤驅動器,DVD和BD,並在網絡中的通信容量等的禮物容量

(B)1 MB(更精確地1 MIB)=字節可通過尋址20個地址行= 2^20(1,048,576)字節。

該MB用於顯示RAM,ROM等半導體存儲器的容量。如果一個存儲器有10條地址線和8條數據線,2^10(1024)個字節的地址(8位),則可以知道RAM中的數據由多條地址線尋址,每條地址線的值爲0或1。可以存儲。這種內存的容量不叫'1千字和24字節內存',而是'1千字節內存'。通過增加內存容量,2^20字節的內存變成了1兆字節的內存。

如果在(A)的使用感詞「MB」,你應該在你的代碼更正行

return ($size/(1024 * 1024)); 

return ($size/(1000 * 1000)); 

改正的代碼將會給你答案0.001024 MB。

如果您在(B)的意義上使用單詞「MB」,那麼0.0009765625 MB是正確的答案。

有兩種MB,所以有兩種正確的答案。

這取決於你這是你想要得到的答案。

+1

實際上只有一種'MB',你提到的第二種是'MiB' http://en.wikipedia.org/wiki/Mebibyte – 2014-11-05 11:04:20

5

您得到0.0009765625,因爲這是您定義的正確答案。

爲了得到0.001024,你就必須通過1000000

劃分1024無論MB2^20字節或10^6字節取決於你是否是編程,組裝或出售硬盤驅動器。請參閱Wikipedia: Megabyte

根據維基百科的官方SI單位是10^61000000字節。

+1

與答案無關;恐怕[Mebibyte](http://en.wikipedia.org/wiki/Mebibyte)聽起來很無聊,就像Babybyte或者Maybebyte一樣。 – 2014-11-05 08:14:17

+0

實際上,「正確的」答案是1 MB總是1000 KB,這是1000字節。所以MB總是10^6。如果你想用1024計算而不是正確的結尾是'MiB'。僅僅因爲很多人將MB定義爲1024 KB並不適合。 – 2014-11-05 10:54:55