打印具有“最合适”千克/兆/等乘数的整数

时间:2012-10-17 23:05:50

标签: algorithm formatting number-formatting

  

可能重复:
  How to convert byte size into human readable format in java?

给定一个整数,我想用人类可读的方式使用kilo,mega,giga等乘法器打印它。我如何选择最好的"乘法器?

以下是一些例子

        1 print as 1
    12345 print as 12.3k
987654321 print as 988M

理想情况下,打印的位数应该是可配置的,例如在最后一个例子中,3位数将导致988M,2位数将导致1.0G,1位数将导致1G,4位数将导致987.7M。

示例:我认为,当OSX告诉我需要复制多少字节时,Apple会使用这种算法。

这适用于Java,但我对算法比对语言更感兴趣。

1 个答案:

答案 0 :(得分:2)

作为一个起点,您可以使用Math.log()函数来获取值的“大小”,然后使用某种形式的关联容器作为后缀(k,M,G等)。 / p>

var magnitude = Math.log(value)/ Math.log(10);

希望这会有所帮助