【问题标题】:Print integer with "most appropriate" kilo/mega/etc multiplier [duplicate]用“最合适的”公斤/兆/等乘数打印整数[重复]
【发布时间】:2012-10-17 23:05:49
【问题描述】:

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

给定一个整数,我想使用公斤、兆、千兆等乘数以人类可读的方式打印它。如何选择“最佳”乘数?

这里有一些例子

        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,但我对算法比对语言更感兴趣。

【问题讨论】:

  • 我认为您的问题中有一些可靠的单元测试,您现在需要做的就是编写算法并测试每个案例,直到它们全部验证。只有你确切地知道你想要什么。从一对夫妇开始,直到他们验证,然后每次再做一个。
  • 我希望我不必自己编写它...我几乎不认为我是第一个想要拥有该算法的人...
  • 看看this answer。我认为它可以满足您的需求。

标签: algorithm formatting number-formatting


【解决方案1】:

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

var 大小 = Math.log(value) / Math.log(10);

希望这能有所帮助

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-02-23
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多