这个○不读零
为了不被误读,古代中国的学者有时会使用某个汉字或者某个占位符号,以此代替那容易令人混淆的空白。例如南北朝时的祖冲之(429年—500年),就是曾经将圆周率推算到小数点后第七位的天才数学家,他会把11011写成“—丨初—丨”。从右向左,“丨”表示个位上的1,“—”表示十位上的1,第二个“丨”表示千位上的1,第二个“—”表示万位上的1。至于中间那个“初”字,则表示百位上没有数字,相当于0。
唐朝有一位僧人数学家,法号一行(683年—727年),他喜欢用“空”表示空白数位,将11011写成“—丨空—丨”。宋朝理学家蔡元定(1135年—1198年)撰写乐书《律吕新书》,则用“□”表示空白数位,11011被写成“—丨□—丨”。
蔡元定《律吕新书》第一卷,用汉字写数字,也用到“□”:
黄钟十七万七千一百第十七;
林钟十一万八千□□九十八;
太簇十五万七千四百六十四;
南吕十□万四千九百七十六;
黄钟、林钟、太簇、南吕,都是乐律名称,乐律后面的数字是乐器长度值。黄钟177117,太簇157464,数位上都没有0,无需用“□”。南吕104976,万位是0,蔡元定用了一个“□”。林钟118098,百位是0,蔡元定用了两个“□”。为什么用两个“□”呢?在这里并无特殊含义,仅仅是为了让四行文字上下对齐,看起来更规整而已。如果一个方框只能表示一个0,那么“林钟十一万八千□□九十八”得改成“林钟十一万八千□九十八”,少一个字符,看上去比其他乐律短一节,不美观。
仅仅为了美观,就在数值当中随意增添或者减少占位符,这也说明蔡元定使用的“□”不是真正的0。
南宋数学家秦九韶(1208年—1268年)著有《数学九章》一书,书中首次出现“○”这个占位符,例如403写成“四百○三”,505写成“五百○五”。这个正圆的○与阿拉伯数字里扁圆的0有些相像,看起来都是圆圈,但它却不读“零”,而读作“空”。
元朝天文学家郭守敬(1231年—1316年)著《授时历》,明朝数学家程大位(1533年—1606年)著《算法统宗》,都普遍使用○。郭守敬用“八十○○六”表示80.06,前一个○相当于小数点,后一个○相当于空白数位。程大位用“二十九两五钱五分○○一丝”表示29两5钱5分0厘0毫1丝,即29.55001两,其中的两个○都相当于空白数位,表示在“厘”和“毫”这两个货币单位上,金额是空无所有的。
看到这,有些读者一定会认为0是中国人发明的,发明时间不晚于南宋,发明者或许就是南宋数学家秦九韶。但是如前所述,中国数学古籍里的○不是真正的0,它只是占位符,是用来填补算筹之间那一小片空白的占位符,它的读音也不是“零”,而是“空”。