将字节转换为TB返回错误的值

时间:2019-07-04 07:07:00

标签: javascript

目前,我有一个将字节也转换为TB的函数。

我正在使用以下公式进行转换。

const formatBytesToTB = (a, b = 2) => {
  if (a === 0) {
    return "0 TB";
  }
  return (a / 1099511627776).toFixed(b) + " TB";
};
console.log(formatBytesToTB(109213384704));

上面的函数对于它接受为字节的大多数值都可以正常工作

当字节值小于1 TB时,我看到一些错误。

例如,当输入为“ 109213384704”时,该函数将返回“ 0.10 TB”

预期输出应为“ 0.09”

我看到很少有在线转换器可以测试它们返回的内容,Google返回0.10,但其余转换器显示0.09

该函数在做正确的事吗?

2 个答案:

答案 0 :(得分:1)

109213384704Tebibyte(TiB)中的0.099和0.10 Terrabyte(TB)中的。

来自definitions

TB大小是多少? 一个tebibyte大于以下二进制数据容量度量:

  • 一个字节-TiB等于1,099,511,627,776字节。
  • 1吉字节(KiB)-TiB等于1,073,741,824 KiB。
  • 兆字节(MiB)– TiB等于1,048,576兆字节。
  • 一个千兆字节-TiB等于1,024 GiB。

答案 1 :(得分:1)

似乎只是显示问题-舍入还是忽略精度值后的小数。

109213384704 / 1099511627776的值为0.099328995

因此,如果您只想忽略第二个小数点后的内容,则会得到0.09

但是,toFixed会将数字四舍五入为精度值,因此0.099将得出0.10,而0.091将得出0.09