用于格式化数字和本地化的缩写

时间:2014-02-18 11:55:18

标签: c# number-formatting

我遇到了这篇文章Format Number like Stack Overflow (rounded to thousands with K suffix),它解释了如何取一个数字并在末尾应用后缀,这样可以缩短大数字,并在保留含义的同时占用更少的空间。 SO在不同的地方使用相同的基本逻辑。

我想使用类似的逻辑,但我注意到这个解决方案部分是英语特定的。后缀是英文字母(m =百万,b =十亿)和公制符号(k)的混合,我想知道如何重写它,以便它可以在其他语言中本地化。

例如在帖子中,它会格式化这样的数字:
1.1k = 1,100万。这使用 k metric kilo symbol来表示数千 1.4m = 1,400,000,000。这使用英文单词 million 中的字母 m 来表示数百万。
1.6b = 1,600,000,000亿。这使用英文单词 billion 中的字母 b 来表示数十亿。

我的问题是:
1)公制符号是 k M G 所有文化都能识别? (wikipedia表明它适用于除美国以外的所有人,但我有疑虑) 2).Net BCL中是否有东西可以用来为任何给定的语言获取适当的单个或多个字母的组合,以表示目前用英语做的数百万和数十亿?


我考虑过只使用所有公制符号,但是 G 并没有为我注册数十亿,因为我来自美国;)
1.1K
1.4M
1.6G

如果公制符号在美国境外得到普遍认可,那么上述内容可能适用于所有人,美国是唯一一种特殊的雪花,使其成为简单的if / else语句。

手指交叉,用非英语语言说和写的人可能会对此感到不满。

1 个答案:

答案 0 :(得分:0)

介绍特定文化和/或一般单位。在最简单的情况下,它只是一个因素,例如:

  

ft = m * 3.2808

将您的数据保存在默认单位的数据库中,只需根据文化计算值,并在其末尾添加单位。

关于k,俄语为К,因此您必须本地化单位。

在某些游戏中有非标准单位,例如1kkk,但看起来人们很容易习惯那些(因为它们是合乎逻辑的),所以另一种方法是用户到你的单位。在这种情况下,它应该清楚或很好地记录了什么单位意味着什么。

另外一个例子,在电子产品中,1K5意味着1.5 KOhm