[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 2# hfxiang
你输入的不规范:一万九千七百

TOP

  1. 输入一个中文数字【零 - 二十一亿四千七百四十八万三千六百四十七】:一万九千七百
  2. n=19700
  3. 输入一个中文数字【零 - 二十一亿四千七百四十八万三千六百四十七】:一百零一
  4. n=101
  5. 输入一个中文数字【零 - 二十一亿四千七百四十八万三千六百四十七】:一亿零二十万零伍佰零一
  6. n=100200001
  7. 输入一个中文数字【零 - 二十一亿四千七百四十八万三千六百四十七】:
复制代码

TOP

不知道楼主的规范写法是怎样的?最后一个未通过。

TOP

回复 7# hfxiang
idwma在此帖中http://bbs.bathome.net/viewthrea ... mp;page=1#pid258116的思路靠谱,分段拼接,可突破字符限制。

TOP

回复 9# aloha20200628
抱歉搞错了!!!

TOP

本帖最后由 qixiaobin0715 于 2022-8-11 09:15 编辑

按照idwma在其它帖子中的思路进行分段拼接,可以突破2147483647的限制,适合小于等于“九千九百九十九亿九千九百九十九万九千九百九十九”的值,再大有点复杂,未加考虑,处理一般情况就足够了:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set str=九千九百九十九亿九千九百九十九万九千九百九十九
  4. set str=!str:零=!
  5. set str=!str:亿=亿 !
  6. set str=!str:万=万 !
  7. set _十=10
  8. for %%i in (一 二 三 四 五 六 七 八 九) do (
  9.     set /a x+=1
  10.     set /a _%%i=!x!
  11.     set y=1
  12.     for %%j in (十 百 千) do (
  13.         set /a y*=10
  14.         set /a _%%i%%j=!x!*!y!
  15.     )
  16. )
  17. for %%i in (!str!) do (
  18.     set Part=%%i
  19.     if !Part:~-1!==亿 (
  20.         set Part1=!Part:~,-1!
  21.     ) else if !Part:~-1!==万 (
  22.         set Part2=!Part:~,-1!
  23.     ) else (
  24.         set Part3=%%i
  25.     )
  26. )
  27. for /l %%i in (1,1,3) do (
  28.     if defined Part%%i (
  29.         set Part%%i=!Part%%i:千=千 !
  30.         set Part%%i=!Part%%i:百=百 !
  31.         set Part%%i=!Part%%i:十=十 !
  32.         for %%j in (!Part%%i!) do set /a m%%i+=_%%j
  33.     )
  34.     set /a m%%i+=10000
  35.     set m%%i=!m%%i:~1!
  36. )
  37. for /f "tokens=* delims=0" %%i in ("!m1!!m2!!m3!") do echo,%%i
  38. pause
复制代码
保存为ANSI编码。
代码是按照一般思路写的,考虑的还不算成熟,应当还有更简洁的方法。

TOP

先以亿分为2段,再将2段以万分别分为2段,总体分为4段,最后拼接,可以扩展为16位数字。

TOP

返回列表