2017-06-21 102 views
2

我需要将兆字节转换为适当的单位。字节人类可读大小与npm包文件大小

parseInt(10000) * 1024 * 1024 //10485760000 byte 

filesize(parseInt(10000) * 1024 * 1024); // "9.77 GB" 

9.77 GB似乎是错误的。当我转换使用谷歌转换器它在线,我得到:

10485760000字节= 10,48576技嘉

为什么这个包behavor这样吗?

回答

2

,所以做他们的前缀:

  • 千克(K):10 = 1,000
  • 兆(M):10 = 1,000,000
  • 千兆(G):10 = 1,000,000,000

当数字基2台计算机被开发他们发明新前缀。关于价值的协议很快就达成了,但要找到吸引人的名字并不容易。不幸的是,最终蔓延在SI的,所以我们结束了一个很好的混乱名称:

  • 公斤(K):2 = 1024
  • 兆(M):2 = 1,048,576
  • 千兆(G):2 = 1,073,741,824

然后,有人发明了可以说是并不像以前的那样糟糕一些新的名字,但为时已晚,阿尔莫ST无人使用它们:

  • 吉备(KI):2 = 1024
  • MEBI(MI):2 = 1,048,576
  • 吉比(GI):2 = 1073741824

在计算机中几乎所有东西都是2的乘方,所以基于小数的单位通常会被避免,因为它们从不是圆的。

在您的例子,使用基体2和基体10名的前缀呈现此:

  • 2分之10485760000 = 9.765625吉布
  • 10分之10485760000 = 10.48576 GB

您想要的值可能是第一个给定它是文件大小的值。

+0

完美解释 –

3

术语千兆字节通常用于表示1000^3字节或1024^3字节。

来源:Wikipedia

filesize包默认使用1024^3。您可以通过指定base选项(默认为2)更改:将SI单位(主要是)基于小数

filesize(10000 * 1024 * 1024, { base: 10 }) // 10.49 GB 

Run in Runkit