作者hmml (hmml)
看板mud_sanc
標題[心得] zMUD 數字由中文轉換成阿拉伯數字
時間Mon Jun 20 09:55:35 2011
如題,用血肉長城的段數來做:
Pattern:
為第(%1)段
Commands:
chnumbers="零 一 二 三 四 五 六 七 八 九 十 百 千 萬 億"
numbers="+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 *10 *100 *1000 M E"
#var bloodmap %1
#loop 1,15 {#var bloodmap
%replace(@bloodmap,%word(@chnumbers,%i),%word(@numbers,%i))}
#var bloodmap %copy(@bloodmap,2,%len(@bloodmap))
#var total %eval(@bloodmap)
#say @total
說明:轉換上限到999。想轉到萬位甚至億位以上呢?改成如下段:
Commands:
chnumbers="零 一 二 三 四 五 六 七 八 九 十 百 千 萬 億"
numbers="+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 *10 *100 *1000 M E"
#var bloodmap %1
#loop 1,15 {#var bloodmap
%replace(@bloodmap,%word(@chnumbers,%i),%word(@numbers,%i))}
#if (%pos(E,@bloodmap)>0) {#var bloodmapE %copy(@bloodmap,1,%pos(E,@bloodmap)-1)
#var bloodmapE %copy(@bloodmapE,2,%len(@bloodmapE))
#var bloodmap %copy(@bloodmap,%pos(E,@bloodmap)+1,%len(@bloodmap))} {#var
bloodmapE 0}
#if (%pos(M,@bloodmap)>0) {#var bloodmapM %copy(@bloodmap,1,%pos(M,@bloodmap)-1)
#var bloodmapM %copy(@bloodmapM,2,%len(@bloodmapM))
#var bloodmap %copy(@bloodmap,%pos(M,@bloodmap)+1,%len(@bloodmap))} {#var
bloodmapM 0}
#var bloodmap %copy(@bloodmap,2,%len(@bloodmap))
#var total %eval(@bloodmap+(@bloodmapM)*10000+(@bloodmapE)*100000000)
#say @total
說明:理論上可以直上999999999999,不過zMUD數字計算也是有上限的,數字
跟聖殿銀行存款上限差不多:
二十一億四千七百四十七萬九千九百九十九
再上去就是負數,真要算上去,要用接的。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.232.7.47
1F:推 justinj :像十三可以轉哦.%eval(*10+3)=13....怎麼看都怪amem 06/20 10:00
2F:→ hmml :#var bloodmap %copy(@bloodmap,2,%len(@bloodmap)) 06/20 10:01
3F:→ hmml :把第一個字元砍掉呀.... 06/20 10:02
4F:推 justinj :soga~~~ 06/20 10:03
5F:→ justinj :第二條依我的能力看了頭會花...amem 06/20 10:04
6F:→ justinj :總覺得第一條轉換上限為9999...amem 06/20 10:05
7F:→ hmml :其實就是 21E1234M1234 <像這樣的格式。 06/20 10:06
8F:→ hmml :以E和M為基準切開來算而已.... 06/20 10:07
9F:→ hmml :對呢....好像是9999.... 06/20 10:08
10F:→ justinj :二千零一十三..%eval(+2*1000+0+1*10+3)....果然要有 06/20 10:09
11F:→ justinj :一十才行...amem 06/20 10:09
12F:→ hmml :二千零一十三才是標準寫法呀,二千零十三通常是不會 06/20 10:14
13F:→ hmml :寫吧!要嘛二千一十三不然就二千零一十三。 06/20 10:15
14F:→ hmml :嚴謹一點的話,十應該寫成一十,十一應該書為一十一 06/20 10:18
15F:→ hmml :不過應要求,適當位置補上: 06/20 10:19
16F:→ hmml :#var bloodmap %replace(@bloodmap,0*,"") 06/20 10:20
※ 編輯: hmml 來自: 118.232.7.47 (06/20 10:25)
17F:推 justinj :你應該顯示不出+*的東東吧.有沒有補這句都沒差.amem 06/20 10:25
嗯....式子想錯了....修好了...
※ 編輯: hmml 來自: 118.232.7.47 (06/20 10:27)
18F:→ hmml :還幫忙抓bug,真是感謝.... 06/20 10:30
19F:推 justinj :我又沒抓到...avert 06/20 10:31
20F:→ hmml :看聖殿可能怎麼顯示呀!照你想的=有抓到。 06/20 10:35
21F:推 curist :實用 06/21 14:44