作者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