【发布时间】:2016-10-05 05:31:12
【问题描述】:
我正在尝试将 BigInteger 数字格式化为更易于阅读的形式
例子:
1000 -> 1.000K
5821 -> 5.821K
10500 -> 10.500K
101800 -> 101.800K
2000000 -> 2.000M
7800000 -> 7.800M
92150000 -> 92.150M
123200000 -> 123.200M
1 000 000 000 000 000 000 -> 1.000E
1 000 000 000 000 000 000 000 -> 1.000Z
1 000 000 000 000 000 000 000 000 -> 1.000Y
611 781 555 431 000 000 000 000 000 -> 611.781Y
我看到了一个使用 long 值的方法,但出于我的目的,long 无法存储足够大的值,所以我必须使用 BigIntegers。如何使用 BigInteger 以这种方式对其进行格式化?
在我的情况下,它应该处理的最大数量是:
1 000 000 000 000 000 000 000 000 000 并被格式化为 1.000B
编辑
不,这不是 this post 的副本。我必须使用 BigInteger 才能工作,并且必须使用 BigInteger 来完成。与我需要的相比,长值(正如另一篇文章所询问的那样)没有存储足够大的值
【问题讨论】:
-
我解释了为什么这是错误的。他们使用 long,为了我的目的,我必须使用 BigInteger。 Long 无法存储足够大的值。编辑帖子以更清晰地添加该细节。
-
比
9223372036854775807大得多?您的所有示例都适合long。10000000000000000000的预期结果是什么? -
1234567 的预期结果是什么?应该是1.234m、1.234567m还是1234.567k?
-
罗伯特考克:1.234m。 Tunaki:添加了很多例子
标签: java biginteger