df -h 和 dfc 之间的区别

df -h 和 dfc 之间的区别

dfc为什么和之间使用的尺寸存在差异df -h

$ df -h
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/sda7        64G     51G   11G   83% /
none            4,0K       0  4,0K    0% /sys/fs/cgroup
udev            3,9G    4,0K  3,9G    1% /dev
tmpfs           801M    1,5M  799M    1% /run
none            5,0M       0  5,0M    0% /run/lock
none            4,0G    148K  4,0G    1% /run/shm
...

$ dfc

FILESYSTEM  (=) USED      FREE (-) %USED AVAILABLE     TOTAL MOUNTED ON 
/dev/sda7   [=================---]   83%     10.6G     63.9G /
none        [--------------------]    0%      4.0K      4.0K /sys/fs/cgroup
udev        [=-------------------]    0%      3.9G      3.9G /dev
tmpfs       [=-------------------]    0%    798.7M    800.1M /run
none        [--------------------]    0%      5.0M      5.0M /run/lock
none        [=-------------------]    0%      3.9G      3.9G /run/shm
...

我不会将 3.9 舍入为 4,然后显示 4,0,这对我来说毫无意义。

答案1

这不仅仅是“四舍五入”。 dfc(和di)打印四舍五入到最接近的数字表示的值,而df四舍五入向上

该问题没有指定 coreutils 的版本;我是根据版本 8.13(在 Debian 7 中)回答的,尽管我在 8.25 中看到了相同的结果。

-h选项df.c

    case 'h':
      human_output_opts = human_autoscale | human_SI | human_base_1024;
      output_block_size = 1;
      break;

gnulib 的“human.c”中有后续代码(驼峰),它决定使用哪种类型的舍入。因为人类选项没有被修改,所以它使用天花板而不是地面或者四舍五入到最接近的值。那是因为零恰好是枚举值对于天花板:

  /* Unless otherwise specified these options may be ORed together.  */

  /* The following three options are mutually exclusive.  */
  /* Round to plus infinity (default).  */
  human_ceiling = 0,
  /* Round to nearest, ties to even.  */
  human_round_to_nearest = 1,
  /* Round to minus infinity.  */
  human_floor = 2,

答案2

我相信这被称为“四舍五入”。

相关内容