为什么千位分隔符称为“分组分隔符”?

时间:2013-03-08 04:10:01

标签: java objective-c locale number-formatting

在许多编程语言中,千位分隔符(例如,美国字符串“1,000”中的“,”)被称为“分组分隔符”。为什么是这样?

是否有任何真实的区域设置将写入的整数分隔在其他边界上?人们在某处写的数字是86,75,30,9或8675,309吗?如果是,那些区域设置是什么?

今天在Objective-C中出现了这个问题,当时我记不起常量的名称来找到这个分隔符的字符串。我正在输入“NSThou”,没有任何内容是自动完成的。我不得不去找文档提醒你得到这样的话:

NSLocale *loc = [NSLocale currentLocale];
NSString *sep = [loc objectForKey:NSLocaleGroupingSeparator];

但是,这不是Objective-C特有的;我从旧的Java时代回忆起它被称为同样的东西。 (Python人员,OTOH,似乎称之为“thousands separator”。)

3 个答案:

答案 0 :(得分:6)

Wikipedia说:

  

例如,在各个国家(例如,中国,印度和日本),传统的传统惯例是按2位或4位分组。

答案 1 :(得分:3)

很少有像印度及其邻国的国家使用千位分隔符来提高可读性,因为只有最后三个分为三个并且分为两个:像

100

1000

10,000

1,00,000

10,00,000

1,00,00,000

少数国家/地区遵循3的分组

100000

亿


除此之外,您可能会对几个国家的用途感到困惑。并且,为了代表十进制和千位分隔符,这里你不能说这个值代表10,000,10000.00和10000,00,因此每当你要求用户输入数字时你需要设置数字格式的本地化

答案 2 :(得分:0)

作为中国人,我想我在这个问题上有发言权。

中文数字系统与英文数字系统有所不同,因为我们将数字分组为4,而不是3。这是因为在千位,百位,十和一。因此,英语中的1000000是一百万,而中文是一百“ wan”,因此写成100,0000而不是1,000,000。

还需要指出的是,许多编程语言在此问题上都具有错误的语言环境实现,例如Java的字符串格式。