中文數字的權位是明的,阿拉伯數字的權位則隱含在數字的位置中。怎麼將文字權位轉換為數字權位,下面解析。
對於十進位制阿拉伯數字,數字的所在位數就是該數字與10的倍數關係。個位就是1倍,十位就是10倍,以此類推。通過這個關係,可以將阿拉伯數字隱含的權位轉換成10的倍數表示,比如「四萬兩千五百一十二」,等於 4*10000+2*1000+5*100+1*10+3*1.
由上述可知,從中文數字轉阿拉伯數字的基本方法就是從中文數字逐個識別出數字和權位的組合,然後根據權位和阿拉伯數字倍數的對應關係計算出每個數字和權位的值,最後求和得到結果。
除上述外,因節權位常和其他權位連在一起使用;在設計演算法時,由於零沒有權位,因此可以直接跳過零。節權位比較特殊,它不是與之相鄰的數字的倍數,二十整個小節的倍數,轉換過程中要臨時儲存每個節權位出現前的小節的值。
<?php
class
chinesetonumber
$b_jie
=$this
->
fen(
$str
,$this
->
b_weight);
foreach
($b_jie
as$k
=>$v)
}$num
=$this
->
cou(
$jie);
$this
->
pintstr
($num
,$this
->
inp);}
//10的陣列下標次方*對應值 累加
public
function
cou(
$arr
)return
$num;}
//按傳入的陣列切分陣列
詳見,請點我! 中文數字轉阿拉伯數字
這個題與leetcode第13題羅馬數字轉換很相似 13.roman to integer 我開始想用c 處理,進行漢字 個十百千萬 與數字的對應,但是中文字元不屬於ascii碼,直接使用標準類模板裡的string會導致漢字亂碼。所以得使用寬字串wstring和寬字元wchar t 使用stl中的m...
阿拉伯數字轉中文數字
推薦閱讀 例如 將102轉為一百零二 將08轉為八。local chnnumchar local chnunitchar local chnunitsection local function sectiontochinese section,chinesenum local setionchine...
php 阿拉伯數字轉中文數字 方法
function ch num num,mode true char array 零 壹 貳 叄 肆 伍 陸 柒 捌 玖 dw array 拾 佰 仟 萬 億 兆 dec 點 retval if mode preg match all 0 d d num,ar else preg match all...